[STM8] 分享stm8l驱动nrf24l01,像串口一样使用24l01进行数据收发

[复制链接]
1049|11
 楼主| cry1109 发表于 2020-1-19 10:44 | 显示全部楼层 |阅读模式
本帖最后由 cry1109 于 2020-1-19 10:46 编辑

函数的封装比较全面,初始化配置、收/发模式的切换、数据的收发等等,使用起来就像串口一样简单。下面是部分代码:
  1. /*-----------------------------------------------------------------------------
  2. * 函 数 名         : Nrf_SendData()
  3. * 函数功能                           : 开启NRF发送一次数据
  4. * 输    入         : txbuff:指向待发送的数据   
  5.                                                                                  length: 发送数据长度
  6. * 输    出         : TX_OK :发送成功
  7.                                                                                  0xff  :发送失败
  8. -----------------------------------------------------------------------------*/
  9. uint8_t Nrf_SendData(uint8_t *txbuff,uint8_t length)
  10. {
  11.                 uint8_t status;
  12.                
  13.                 Nrf_CE(0);
  14.                 Nrf_WriteBuff(WR_TX_PLOAD,txbuff,length);
  15.                 Nrf_CE(1);
  16.                
  17.                 while(GPIO_ReadInputDataBit(NRF_IRQ_PORT, NRF_IRQ_PIN)!=0);//等待发送完成
  18.                 status=Nrf_ReadReg(STATUS);                                                          
  19.                 Nrf_WriteReg(NRF_WRITE_REG+STATUS,status); //清除TX_DS或MAX_RT中断标志
  20.                
  21.                 if(status&MAX_TX)//达到最大重发次数
  22.                 {
  23.                                 Nrf_WriteReg(FLUSH_TX,0xff);//清除TX FIFO寄存器
  24.                                 return MAX_TX;
  25.                 }
  26.                
  27.                 if(status&TX_OK)//发送完成
  28.                 {
  29.                                 Nrf.TxOK = 1;
  30.                                 Nrf.LED = 1;
  31.                                 return TX_OK;
  32.                 }
  33.                 else
  34.                 {
  35.                                 Nrf.TxOK = 0;
  36.                                 return TX_FAIL;//发送失败
  37.                 }
  38. }

  39. /*-----------------------------------------------------------------------------
  40. * 函 数 名         : Nrf_ReceiveData()
  41. * 函数功能                           : 读取NRF接收的数据
  42. * 输    入         : rxbuff:缓存读取的数据
  43.                                                                                  length: 读取的数据长度
  44. * 输    出         : 1:接收到数据   0:无接收数据
  45. -----------------------------------------------------------------------------*/
  46. uint8_t Nrf_ReceiveData(uint8_t *rxbuff,uint8_t length)
  47. {
  48.                 uint8_t status;                                                                                 
  49.                 status=Nrf_ReadReg(STATUS);           
  50.                 Nrf_WriteReg(NRF_WRITE_REG+STATUS,status);         //清除TX_DS或MAX_RT中断标志
  51.                 if(status&RX_OK)                                       
  52.                 {
  53.                                 Nrf_ReadBuff(RD_RX_PLOAD,rxbuff,length);        //读取数据
  54.                                 Nrf_WriteReg(FLUSH_RX,0xff);                                                        //清除RX FIFO寄存器
  55.                                 Nrf.RxOK = 1;
  56.                                 Nrf.LED = 1;
  57.                                 return 1;
  58.                 }
  59.                 else
  60.                 {
  61.                                 Nrf.RxOK = 0;
  62.                                 return 0;                //没收到任何数据
  63.                 }
  64. }

马上就要过年啦,祝大家新年快乐,工作顺利!


NRF24L01.rar

3.88 KB, 下载次数: 19

mmuuss586 发表于 2020-1-19 11:20 | 显示全部楼层
不错,感谢分享
guanjiaer 发表于 2020-2-5 17:50 | 显示全部楼层
非常感谢楼主分享
heimaojingzhang 发表于 2020-2-5 17:52 | 显示全部楼层
非常感谢楼主分享
keaibukelian 发表于 2020-2-5 17:54 | 显示全部楼层
非常感谢楼主分享
labasi 发表于 2020-2-5 17:56 | 显示全部楼层
非常感谢楼主分享
paotangsan 发表于 2020-2-5 17:57 | 显示全部楼层
非常感谢楼主分享
renzheshengui 发表于 2020-2-5 18:01 | 显示全部楼层
非常感谢楼主分享
wakayi 发表于 2020-2-5 18:03 | 显示全部楼层
非常感谢楼主分享
wowu 发表于 2020-2-5 18:05 | 显示全部楼层
非常感谢楼主分享
xiaoqizi 发表于 2020-2-5 18:07 | 显示全部楼层
非常感谢楼主分享
木木guainv 发表于 2020-2-5 18:10 | 显示全部楼层
非常感谢楼主分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

172

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部