发布原因
在我绞尽脑汁的搜索了n多遍的各种搜索引擎后,发现没有现成的双向快速通信代码可以抄,又因为才开始学stm32,很多东西都是在网上抄下来,改改就用,或者去官方资料里找示例代码改改然后自己用,最近是在弄无人机,想弄一个可以回传各个电机情况的双向通信,但实在是找不到又现成的代码,只好凭借自己刚学了2个星期的stm32知识来修改官方的代码,来实现我的功能,也顺便分享一下。
通信芯片的选用
单片机信号stm32f103c8t6,通信芯片为G01-S(国产芯片,Si24R1射频模块),此芯片说是可以替代nRF24L01P,重点是便宜,我所用的通信距离只有120M。
代码部分
所有代码基本是官方提供的,我只在drv_RF24L01.c中修改了发送的步骤,接收的时的等待时间,其他的就只修改了脚针接口,自行修改即可,我只放出了我修改过的部分代码。
说明
修改main.c中的delay_ms的时间可以改变通信频率,现在是100Hz左右。
drv_RF24L01.c
/**
* @brief :NRF24L01发送一次数据
* @param :
* @txbuf:待发送数据首地址
* @Length:发送数据长度
* @note :无
* @retval:
* MAX_TX:达到最大重发次数
* TX_OK:发送完成
* 0xFF:其他原因
*/
uint8_t NRF24L01_TxPacket( uint8_t *txbuf, uint8_t Length