找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 16863|回复: 45
打印 上一主题 下一主题
收起左侧

STM32驱动CC1101的程序

  [复制链接]
跳转到指定楼层
楼主
ID:64099 发表于 2015-5-2 21:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


STM32驱动CC1101的程序,保证可用

发送程序部分预览(完整版请下载本帖最后的附件):
  1. /*
  2. ** CC1101 433MHz无线模块相互通信
  3. ** 2014-11-16
  4. */

  5. #include "stm32f10x.h"
  6. #include "cc1101.h"
  7. #include "led.h"        

  8. /*************NVIC控制器配置***************************/
  9. //组号  抢占位数 子优先级数量
  10. //  组0                        0                                        4
  11. //  组1                        1                                        3
  12. //  组2                        2                                        2
  13. //  组3                        3                                        1
  14. //  组4                        4                                        0
  15. #define NVIC_PRIORITY_GROUP_0   (7 - 0)
  16. #define NVIC_PRIORITY_GROUP_1   (7 - 1)
  17. #define NVIC_PRIORITY_GROUP_2   (7 - 2)
  18. #define NVIC_PRIORITY_GROUP_3   (7 - 3)
  19. #define NVIC_PRIORITY_GROUP_4   (7 - 4)
  20. #define NVIC_PRIORITY_GROUP            (NVIC_PRIORITY_GROUP_2)      /* 设置为组2 */



  21. //#include "RF_Send.h"
  22. //#include "task.h"
  23. //***************更多功率参数设置可详细参考DATACC1100英文文档中第48-49页的参数表******************
  24. //INT8U PaTabel[8] = {0x04 ,0x04 ,0x04 ,0x04 ,0x04 ,0x04 ,0x04 ,0x04};  //-30dBm   功率最小
  25. //INT8U PaTabel[8] = {0x17,0x17 ,0x17 ,0x17 ,0x17 ,0x17,0x17 ,0x17}; //-20dBm
  26. //INT8U PaTabel[8] = {0x1D,0x1D ,0x1D ,0x1D ,0x1D ,0x1D,0x1D ,0x1D}; //-15dBm
  27. //INT8U PaTabel[8] = {0x26,0x26 ,0x26 ,0x26 ,0x26 ,0x26,0x26 ,0x26}; //-10dBm
  28. //INT8U PaTabel[8] = {0x37,0x37 ,0x37 ,0x37 ,0x37 ,0x37,0x37 ,0x37}; //-6dBm
  29. //INT8U PaTabel[8] = {0x60 ,0x60 ,0x60 ,0x60 ,0x60 ,0x60 ,0x60 ,0x60};//0dBm
  30. //INT8U PaTabel[8] = {0x86,0x86 ,0x86 ,0x86 ,0x86 ,0x86,0x86 ,0x86}; //5dBm

  31. const u8 PaTabel[8] = {0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0};//12dBm

  32. u8 RF_Read_Buff[64];//接收缓冲区

  33. _RF_Sta  RF_Sta;//RF状态
  34. /////////////////////////////////////////////////////////////////
  35. const RF_SETTINGS rfSettings =
  36. {
  37.         0x00,
  38.         0x08,   // FSCTRL1   Frequency synthesizer control.
  39.         0x00,   // FSCTRL0   Frequency synthesizer control.
  40.         0x10,   // FREQ2     Frequency control word, high byte.
  41.         0xA7,   // FREQ1     Frequency control word, middle byte.
  42.         0x62,   // FREQ0     Frequency control word, low byte.
  43.         0x5B,   // MDMCFG4   Modem configuration.
  44.         0xF8,   // MDMCFG3   Modem configuration.
  45.         0x03,   // MDMCFG2   Modem configuration.
  46.         0x22,   // MDMCFG1   Modem configuration.
  47.         0xF8,   // MDMCFG0   Modem configuration.
  48.         
  49.         0x00,   // CHANNR    Channel number.
  50.         0x47,   // DEVIATN   Modem deviation setting (when FSK modulation is enabled).
  51.         0xB6,   // FREND1    Front end RX configuration.
  52.         0x10,   // FREND0    Front end RX configuration.
  53.         0x18,   // MCSM0     Main Radio Control State Machine configuration.
  54.        // 0x0F,   // MCSM1     Main Radio Control State Machine configuration.
  55.         0x1D,   // FOCCFG    Frequency Offset Compensation Configuration.
  56.         0x1C,   // BSCFG     Bit synchronization Configuration.
  57.         0xC7,   // AGCCTRL2  AGC control.
  58.         0x00,   // AGCCTRL1  AGC control.
  59.         0xB2,   // AGCCTRL0  AGC control.
  60.         
  61.         0xEA,   // FSCAL3    Frequency synthesizer calibration.
  62.         0x2A,   // FSCAL2    Frequency synthesizer calibration.
  63.         0x00,   // FSCAL1    Frequency synthesizer calibration.
  64.         0x11,   // FSCAL0    Frequency synthesizer calibration.
  65.         0x59,   // FSTEST    Frequency synthesizer calibration.
  66.         0x81,   // TEST2     Various test settings.
  67.         0x35,   // TEST1     Various test settings.
  68.         0x09,   // TEST0     Various test settings.
  69.         0x0B,   // IOCFG2    GDO2 output pin configuration.
  70.         0x06,   // IOCFG0D   GDO0 output pin configuration. Refer to SmartRF?Studio User Manual for detailed pseudo register explanation.
  71.         
  72.         0x04,   // PKTCTRL1  Packet automation control.
  73.         0x05,   // PKTCTRL0  Packet automation control.
  74.         0x00,   // ADDR      Device address.
  75.         RFDATLEN    // PKTLEN    Packet length.
  76. };




  77. //*****************************************************************************************
  78. //函数名:delayus(unsigned int s)
  79. //输入:时间
  80. //输出:无
  81. //功能描述:普通廷时,内部用
  82. //*****************************************************************************************               

  83. void delayus(u16 timeout)
  84. {
  85.     u8 i;
  86.     do
  87.     {
  88.        for(i=0; i<20; i++);
  89.     }
  90.     while (--timeout);

  91. }

  92. /*****************************************************************************************/
  93. //函数名:CC1101_SpiInit()
  94. //输入:无
  95. //输出:无
  96. //功能描述:SPI初始化程序
  97. /*****************************************************************************************/
  98. void CC1101_SpiInit(void)
  99. {
  100.           RCC->APB2ENR|=1<<4;                                             //使能PORTC时钟
  101.           GPIOC->CRL&=0Xff000000;                                                  
  102.           GPIOC->CRL|=0X00833388;
  103.           GPIOC->ODR|=0x00000023;         
  104. }


  105. void Open_GD0_Interrupt(void)
  106. {
  107.           uint32_t priority;
  108.         
  109.          /* 使能io复用时钟 */
  110.     RCC->APB2ENR |=  1 << 0;
  111. /* 配置为输外部中断5在PC5上 */
  112.     AFIO->EXTICR[1] &= ~(0xF << 4);
  113.     AFIO->EXTICR[1] |=  (2   << 4);

  114.     /* 开启外部中断5 */
  115.     EXTI->IMR       |=  (1 << 5);

  116.     /* 上升沿触发 */
  117.     EXTI->RTSR      |=  (1 << 5);
  118.     EXTI->FTSR      &= ~(1 << 5);
  119.    
  120.           NVIC_SetPriorityGrouping(NVIC_PRIORITY_GROUP);         /* 设置为组2 */
  121.     priority = NVIC_EncodePriority (NVIC_PRIORITY_GROUP, 2, 3);
  122.     NVIC_SetPriority(EXTI9_5_IRQn,priority);  /* EXTIx_IRQn 在stm32f10x.h中有定义 */
  123.     NVIC_EnableIRQ(EXTI9_5_IRQn);

  124. }
  125. //*****************************************************************************************
  126. //函数名:SpisendByte(INT8U dat)
  127. //输入:发送的数据
  128. //输出:无
  129. //功能描述:SPI发送一个字节
  130. //*****************************************************************************************
  131. u8 SpiTxRxByte(u8 dat)
  132. {
  133.     u8 i,j,temp= 0;
  134.     SCK = 0;
  135.     for(i=0; i<8; i++)
  136.     {
  137.         if(dat & 0x80)MOSI = 1;
  138.         else MOSI = 0;
  139.                           j++;j++;
  140.         dat <<= 1;
  141.                           j++;j++;
  142.         SCK = 1;
  143.                           j++;j++;
  144.         temp <<= 1;
  145.         if(MISO)temp++;               
  146.         SCK = 0;
  147.                           j++;j++;

  148.     }
  149.     return temp;
  150. }

  151. //*****************************************************************************************
  152. //函数名:void RESET_CC1100(void)
  153. //输入:无
  154. //输出:无
  155. //功能描述:复位CC1100
  156. //*****************************************************************************************
  157. u8 RESET_CC1100(void)
  158. {
  159.           u16 n=0;
  160.     CSN = 0;
  161.     while(MISO)
  162.                 {
  163.                   if(++n>300)return 0;
  164.                         delayus(5);
  165.                 }
  166.                 n=0;
  167.     SpiTxRxByte(CCxxx0_SRES);                 //写入复位命令
  168.     while(MISO)
  169.                 {
  170.                   if(++n>300)return 0;
  171.                         delayus(5);
  172.                 }
  173.     CSN = 1;
  174.                 return 1;
  175. }

  176. //*****************************************************************************************
  177. //函数名:void POWER_UP_RESET_CC1100(void)
  178. //输入:无
  179. //输出:无
  180. //功能描述:上电复位CC1100
  181. //*****************************************************************************************
  182. u8 POWER_UP_RESET_CC1100(void)
  183. {
  184.     CSN = 1;
  185.     delayus(10);
  186.     CSN = 0;
  187.     delayus(10);
  188.     CSN = 1;
  189.     delayus(100);
  190.     if(RESET_CC1100())return 1;                  //复位CC1100
  191.           return 0;
  192. }

  193. //*****************************************************************************************
  194. //函数名:void halSpiWriteReg(INT8U addr, INT8U value)
  195. //输入:地址和配置字
  196. //输出:无
  197. //功能描述:SPI写寄存器
  198. //*****************************************************************************************
  199. void halSpiWriteReg(u8 addr, u8 value)
  200. {
  201.           u16 n=0;
  202.     CSN = 0;
  203.     while(MISO)
  204.                 {
  205.                   if(++n>300)break;
  206.                         delayus(5);
  207.                 }
  208.     SpiTxRxByte(addr);                //写地址
  209.     SpiTxRxByte(value);                //写入配置
  210.     CSN = 1;
  211. }

  212. //*****************************************************************************************
  213. //函数名:void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
  214. //输入:地址,写入缓冲区,写入个数
  215. //输出:无
  216. //功能描述:SPI连续写配置寄存器
  217. //*****************************************************************************************
  218. void halSpiWriteBurstReg(u8 addr, u8 *buffer, u8 count)
  219. {
  220.     u8 i, temp;
  221.     temp = addr | WRITE_BURST;
  222.     CSN = 0;
  223.     while(MISO)
  224.                 {
  225.                   if(++i>250)break;
  226.                         delayus(5);
  227.                 }
  228.     SpiTxRxByte(temp);
  229.     for (i = 0; i < count; i++)
  230.     {
  231.         SpiTxRxByte(buffer[i]);
  232.     }
  233.     CSN = 1;
  234. }

  235. //*****************************************************************************************
  236. //函数名:void halSpiStrobe(INT8U strobe)
  237. //输入:命令
  238. //输出:无
  239. //功能描述:SPI写命令
  240. //*****************************************************************************************
  241. void halSpiStrobe(u8 strobe)
  242. {
  243.           u8 n=0;
  244.     CSN = 0;
  245.      while(MISO)
  246.                 {
  247.                   if(++n>250)break;
  248.                         delayus(5);
  249.                 }
  250.     SpiTxRxByte(strobe);                //写入命令
  251.     CSN = 1;
  252. }

  253. //*****************************************************************************************
  254. //函数名:INT8U halSpiReadReg(INT8U addr)
  255. //输入:地址
  256. //输出:该寄存器的配置字
  257. //功能描述:SPI读寄存器
  258. //*****************************************************************************************
  259. u8 halSpiReadReg(u8 addr)
  260. {
  261.     u8 temp, value=0;
  262.     temp = addr|READ_SINGLE;//读寄存器命令
  263.     CSN = 0;
  264.      while(MISO)
  265.                 {
  266.                   if(++value>250)break;
  267.                         delayus(5);
  268.                 }
  269.     SpiTxRxByte(temp);
  270.     value = SpiTxRxByte(0);
  271.     CSN = 1;
  272.     return value;
  273. }


  274. //*****************************************************************************************
  275. //函数名:void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)
  276. //输入:地址,读出数据后暂存的缓冲区,读出配置个数
  277. //输出:无
  278. //功能描述:SPI连续写配置寄存器
  279. //*****************************************************************************************
  280. void halSpiReadBurstReg(u8 addr, u8 *buffer, u8 count)
  281. {
  282.     u8 i=0,temp;
  283.     temp = addr | READ_BURST;                //写入要读的配置寄存器地址和读命令
  284.     CSN = 0;
  285.      while(MISO)
  286.                 {
  287.                   if(++i>250)break;
  288.                         delayus(5);
  289.                 }
  290.     SpiTxRxByte(temp);   
  291.     for (i = 0; i < count; i++)
  292.     {
  293.         buffer[i] = SpiTxRxByte(0);
  294.     }
  295.     CSN = 1;
  296. }


  297. //*****************************************************************************************
  298. //函数名:INT8U halSpiReadReg(INT8U addr)
  299. //输入:地址
  300. //输出:该状态寄存器当前值
  301. //功能描述:SPI读状态寄存器
  302. //*****************************************************************************************
  303. u8 halSpiReadStatus(u8 addr)
  304. {
  305.     u8 value=0,temp;
  306.     temp = addr | READ_BURST;                //写入要读的状态寄存器的地址同时写入读命令
  307.     CSN = 0;
  308.      while(MISO)
  309.                 {
  310.                   if(++value>250)break;
  311.                         delayus(5);
  312.                 }
  313.     SpiTxRxByte(temp);
  314.     value = SpiTxRxByte(0);
  315.     CSN = 1;
  316.     return value;
  317. }

  318. //*****************************************************************************************
  319. //函数名:void CC1101_Set_PKTLEN(u8 len)
  320. //输入:无
  321. //输出:无
  322. //功能描述:配置CC1101数据长度
  323. //*****************************************************************************************
  324. void CC1101_Set_PKTLEN(u8 len)//配置CC1101数据长度
  325. {
  326.    halSpiWriteReg(CCxxx0_PKTLEN,len);
  327. }

  328. //*****************************************************************************************
  329. //函数名:void halRfWriteRfSettings(RF_SETTINGS *pRfSettings)
  330. //输入:无
  331. //输出:无
  332. //功能描述:配置CC1100的寄存器
  333. //*****************************************************************************************
  334. void halRfWriteRfSettings(void)
  335. {
  336.    
  337.     halSpiWriteReg(CCxxx0_FSCTRL0,  rfSettings.FSCTRL2);//自已加的
  338.     // Write register settings
  339.     halSpiWriteReg(CCxxx0_FSCTRL1,  rfSettings.FSCTRL1);
  340.     halSpiWriteReg(CCxxx0_FSCTRL0,  rfSettings.FSCTRL0);
  341.     halSpiWriteReg(CCxxx0_FREQ2,    rfSettings.FREQ2);
  342.     halSpiWriteReg(CCxxx0_FREQ1,    rfSettings.FREQ1);
  343.     halSpiWriteReg(CCxxx0_FREQ0,    rfSettings.FREQ0);
  344.     halSpiWriteReg(CCxxx0_MDMCFG4,  rfSettings.MDMCFG4);
  345.     halSpiWriteReg(CCxxx0_MDMCFG3,  rfSettings.MDMCFG3);
  346.     halSpiWriteReg(CCxxx0_MDMCFG2,  rfSettings.MDMCFG2);
  347.     halSpiWriteReg(CCxxx0_MDMCFG1,  rfSettings.MDMCFG1);
  348.     halSpiWriteReg(CCxxx0_MDMCFG0,  rfSettings.MDMCFG0);
  349.     halSpiWriteReg(CCxxx0_CHANNR,   rfSettings.CHANNR);
  350.     halSpiWriteReg(CCxxx0_DEVIATN,  rfSettings.DEVIATN);
  351.     halSpiWriteReg(CCxxx0_FREND1,   rfSettings.FREND1);
  352.     halSpiWriteReg(CCxxx0_FREND0,   rfSettings.FREND0);
  353.     halSpiWriteReg(CCxxx0_MCSM0 ,   rfSettings.MCSM0 );
  354.     halSpiWriteReg(CCxxx0_FOCCFG,   rfSettings.FOCCFG);
  355.     halSpiWriteReg(CCxxx0_BSCFG,    rfSettings.BSCFG);
  356.     halSpiWriteReg(CCxxx0_AGCCTRL2, rfSettings.AGCCTRL2);
  357.     halSpiWriteReg(CCxxx0_AGCCTRL1, rfSettings.AGCCTRL1);
  358.     halSpiWriteReg(CCxxx0_AGCCTRL0, rfSettings.AGCCTRL0);
  359.     halSpiWriteReg(CCxxx0_FSCAL3,   rfSettings.FSCAL3);
  360.     halSpiWriteReg(CCxxx0_FSCAL2,   rfSettings.FSCAL2);
  361.     halSpiWriteReg(CCxxx0_FSCAL1,   rfSettings.FSCAL1);
  362.     halSpiWriteReg(CCxxx0_FSCAL0,   rfSettings.FSCAL0);
  363.     halSpiWriteReg(CCxxx0_FSTEST,   rfSettings.FSTEST);
  364.     halSpiWriteReg(CCxxx0_TEST2,    rfSettings.TEST2);
  365.     halSpiWriteReg(CCxxx0_TEST1,    rfSettings.TEST1);
  366.     halSpiWriteReg(CCxxx0_TEST0,    rfSettings.TEST0);
  367.     halSpiWriteReg(CCxxx0_IOCFG2,   rfSettings.IOCFG2);
  368.     halSpiWriteReg(CCxxx0_IOCFG0,   rfSettings.IOCFG0);   
  369.     halSpiWriteReg(CCxxx0_PKTCTRL1, rfSettings.PKTCTRL1);
  370.     halSpiWriteReg(CCxxx0_PKTCTRL0, rfSettings.PKTCTRL0);
  371.     halSpiWriteReg(CCxxx0_ADDR,     rfSettings.ADDR);
  372.     halSpiWriteReg(CCxxx0_PKTLEN,   rfSettings.PKTLEN);
  373.                 //halSpiWriteReg(CCxxx0_IOCFG0 ,   rfSettings.PKTLEN);
  374. }


  375. //******************************************************************************************
  376. //函数名:void Set_TxMode(void)
  377. //输入:无
  378. //输出:无
  379. //功能描述:设置CC1100为发射模式
  380. //*****************************************************************************************
  381. void Set_TxMode(void)
  382. {
  383.     RF_Sta.mode=RF_TXMODE;
  384.     RF_Sta.Busy=BUSY;//置忙
  385.     GDO0_INTON;//开中断
  386.           halSpiStrobe(CCxxx0_SIDLE);//强制进入空闲模式
  387.     halSpiStrobe(CCxxx0_STX);                //进入发送模式发送数据
  388. }
  389. //*****************************************************************************************
  390. //函数名:void Set_RxMode(void)
  391. //输入:无
  392. //输出:无
  393. //功能描述:设置CC1100为发射接收模式
  394. //*****************************************************************************************
  395. void Set_RxMode(void)
  396. {
  397.     RF_Sta.mode=RF_RXMODE;
  398.           halSpiStrobe(CCxxx0_SFRX);//清洗接收缓冲区
  399.     halSpiStrobe(CCxxx0_SIDLE);//强制进入空闲模式
  400.     halSpiStrobe(CCxxx0_SRX);//进入接收模式
  401.           GDO0_INTON;//开中断
  402. }
  403. //*****************************************************************************************
  404. //函数名:void halRfSendPacket(INT8U *txBuffer, INT8U size)
  405. //输入:发送的缓冲区,发送数据个数
  406. //输出:OK 已发送,其它,错误标志
  407. //功能描述:CC1100发送一组数据
  408. //*****************************************************************************************

  409. u8 halRfSendPacket(u8 *txBuffer, u8 size)
  410. {
  411.             u16 value;
  412.       halSpiWriteReg(CCxxx0_TXFIFO, size);
  413.       halSpiWriteBurstReg(CCxxx0_TXFIFO, txBuffer, size);        //写入要发送的数据
  414.       Set_TxMode();//进入发送模式发送数据
  415.             RF_Sta.Busy=BUSY;
  416.             while(RF_Sta.Busy&BUSY)
  417.                         {
  418.               if(++value>350)return ERR;
  419.                            delayus(5);
  420.                         }
  421.             return OK;
  422. }


  423. u8 halRfReceivePacket(u8 *rxBuffer, u8 length)
  424. {
  425.     u8 status[2];
  426.     u8 packetLength;

  427.     if ((halSpiReadStatus(CCxxx0_RXBYTES) & BYTES_IN_RXFIFO)) //如果接的字节数不为0
  428.     {
  429.         packetLength = halSpiReadReg(CCxxx0_RXFIFO);//读出第一个字节,此字节为该帧数据长度
  430.         if (packetLength <= length)                 //如果所要的有效数据长度小于等于接收到的数据包的长度
  431.         {
  432.             halSpiReadBurstReg(CCxxx0_RXFIFO, rxBuffer, packetLength); //读出所有接收到的数据
  433.             length = packetLength;                                //把接收数据长度的修改为当前数据的长度
  434.             
  435.             // Read the 2 appended status bytes (status[0] = RSSI, status[1] = LQI)
  436.             halSpiReadBurstReg(CCxxx0_RXFIFO, status, 2);         //读出CRC校验位
  437.             halSpiStrobe(CCxxx0_SFRX);                //清洗接收缓冲区
  438.             return (status[1] & CRC_OK);                        //如果校验成功返回接收成功
  439.         }
  440.         else
  441.         {
  442.             length = packetLength;
  443.             halSpiStrobe(CCxxx0_SFRX);                //清洗接收缓冲区
  444.             return 0;
  445.         }
  446.     }
  447.     return 0;
  448. }

  449. u8 CC1101_Init(void)
  450. {
  451.     CC1101_SpiInit();
  452.     if(POWER_UP_RESET_CC1100())//复位CC1100
  453.                 {
  454.                         halRfWriteRfSettings();//配置CC1100
  455.                         halSpiWriteBurstReg(CCxxx0_PATABLE, (u8 *)PaTabel, 8);//设置功率
  456.                         RF_Sta.Busy=IDLE;//空闲
  457.                         RF_Sta.DatFlag=ERR;
  458. //                  Set_TxMode();//默认发送模式
  459.                         Set_RxMode();//进入接收状态
  460.                         return 1;
  461.                 }
  462.                 return 0;
  463. }



  464. //外部中断5服务程序
  465. void EXTI9_5_IRQHandler(void)
  466. {
  467.         EXTI->PR=1<<5;  //清除LINE5上的中断标志位
  468.         GDO0_INTOFF;//关中断
  469.         if(GDO0)
  470.   {
  471.         delayus(20);
  472.         if(GDO0)
  473.         {
  474.                                           LED1=0;
  475.             while(GDO0);
  476.             switch(RF_Sta.mode)
  477.             {
  478.                 case RF_TXMODE: halSpiStrobe(CCxxx0_SFTX);//清洗发送缓冲区
  479.                                 RF_Sta.Busy=IDLE;//空闲
  480.                                                                           RF_Sta.DatFlag=ERR;
  481.                                 break;
  482.                 case RF_RXMODE:if(halRfReceivePacket((u8 *)&RF_Read_Buff,RFDATLEN))
  483.                                 {
  484.                                    RF_Sta.DatFlag=OK;
  485.                                 }
  486.                                break;
  487.                 default:        
  488.                                                                                      break;
  489.             }                                       
  490.         }
  491.     }                 
  492.                 Set_RxMode();//进入接收状态
  493. }                 
复制代码


STM32驱动CC1101代码与pdf.7z

1.35 MB, 下载次数: 455, 下载积分: 黑币 -5

评分

参与人数 2黑币 +55 收起 理由
xl344567789 + 5 很给力!一直在找 谢谢!
admin + 50 共享资料的积分奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏8 分享淘帖 顶3 踩
回复

使用道具 举报

沙发
ID:80373 发表于 2015-5-18 17:30 | 只看该作者
你好,请问你有操作库函数的cc1101的STM32程序吗,能给共享一下么
回复

使用道具 举报

板凳
ID:95378 发表于 2015-11-11 14:55 | 只看该作者
51黑有你更精彩!!!
回复

使用道具 举报

地板
ID:95378 发表于 2015-11-11 14:55 | 只看该作者
51黑有你更精彩!!!
回复

使用道具 举报

5#
ID:104776 发表于 2016-1-30 22:24 | 只看该作者
楼主好人
回复

使用道具 举报

6#
ID:113729 发表于 2016-4-12 14:45 | 只看该作者
51黑有你更精彩!!!
回复

使用道具 举报

7#
ID:113502 发表于 2016-4-15 13:38 | 只看该作者
好资料,谢谢楼主
回复

使用道具 举报

8#
ID:97176 发表于 2016-6-2 18:11 | 只看该作者
多谢分享,谢谢。。
回复

使用道具 举报

9#
ID:125221 发表于 2016-6-5 13:07 | 只看该作者
谢谢分享
回复

使用道具 举报

10#
ID:148022 发表于 2016-11-15 13:47 | 只看该作者
楼主好人  楼主万岁
回复

使用道具 举报

11#
ID:148668 发表于 2016-11-18 15:31 | 只看该作者
mark_______
回复

使用道具 举报

12#
ID:166555 发表于 2017-2-25 11:17 | 只看该作者
51黑有你更精彩!!!
回复

使用道具 举报

13#
ID:4210 发表于 2017-3-7 13:45 | 只看该作者

51黑有你更精彩!!!
回复

使用道具 举报

14#
ID:182573 发表于 2017-3-23 10:33 | 只看该作者
下来试试,楼主好人
回复

使用道具 举报

15#
ID:186207 发表于 2017-4-5 10:28 | 只看该作者
不知道能用吗 试试看
回复

使用道具 举报

16#
ID:188365 发表于 2017-4-11 10:07 | 只看该作者
感谢楼主分享,下载下来参考一下。
回复

使用道具 举报

17#
ID:192698 发表于 2017-4-23 15:34 | 只看该作者
楼主,你好,我不太懂的地方是中断那块,优先级之类的,他是怎么进入中断的?还有为什么是用EXTI中断不是用SPI中断?
回复

使用道具 举报

18#
ID:69829 发表于 2017-7-2 12:02 | 只看该作者
感谢楼主的分享!!先收藏了
回复

使用道具 举报

19#
ID:222291 发表于 2017-7-25 14:34 | 只看该作者
感谢楼主的分享!!好想下载
回复

使用道具 举报

20#
ID:224643 发表于 2017-8-4 11:17 | 只看该作者
51黑有你更精彩!!!
回复

使用道具 举报

21#
ID:125692 发表于 2017-8-4 16:43 | 只看该作者
这个不错谢谢分享
回复

使用道具 举报

22#
ID:223563 发表于 2017-8-5 14:29 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

23#
ID:230764 发表于 2017-9-3 22:59 | 只看该作者
看看能用不
回复

使用道具 举报

24#
ID:234156 发表于 2017-9-19 16:49 | 只看该作者
支持!!!!!!!
回复

使用道具 举报

25#
ID:258522 发表于 2017-12-7 10:41 | 只看该作者
谢谢楼主
回复

使用道具 举报

26#
ID:259269 发表于 2017-12-8 23:27 | 只看该作者
下载下来先学习学习
回复

使用道具 举报

27#
ID:258522 发表于 2017-12-12 16:48 | 只看该作者
51黑精彩
回复

使用道具 举报

28#
ID:87787 发表于 2018-1-1 13:53 | 只看该作者
很需要这个资料,谢谢楼主!
回复

使用道具 举报

29#
ID:281078 发表于 2018-1-31 10:35 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

30#
ID:268376 发表于 2018-2-9 19:09 | 只看该作者

很需要这个资料,谢谢楼主!
回复

使用道具 举报

31#
ID:258139 发表于 2018-2-27 16:30 | 只看该作者
用硬件SPI一直不行,希望能从楼主的这里得到点启发~
回复

使用道具 举报

32#
ID:300530 发表于 2018-4-1 20:58 | 只看该作者
多谢分享!
回复

使用道具 举报

33#
ID:300530 发表于 2018-4-2 14:31 来自手机 | 只看该作者
51黑有你更精彩!
回复

使用道具 举报

34#
ID:316083 发表于 2018-4-25 11:38 | 只看该作者
参考一下!!!!!!!
回复

使用道具 举报

35#
ID:320547 发表于 2018-5-2 16:19 | 只看该作者
参考一下!!!!!!!
回复

使用道具 举报

36#
ID:269116 发表于 2018-9-7 15:14 | 只看该作者
谢谢
回复

使用道具 举报

37#
ID:20672 发表于 2018-11-13 08:42 | 只看该作者
我爱51hei论坛~~~~
回复

使用道具 举报

38#
ID:234294 发表于 2018-12-26 15:31 | 只看该作者
正需要呢.......
回复

使用道具 举报

39#
ID:314702 发表于 2019-1-30 12:44 | 只看该作者
谢谢分享,学习了
回复

使用道具 举报

40#
ID:434313 发表于 2019-4-3 17:11 | 只看该作者
51黑有你更精彩!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表