找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1492|回复: 0
收起左侧

2个stm32f1单片机通过nrf240l1进行无线通信 源程序

[复制链接]
ID:828888 发表于 2021-3-16 19:32 | 显示全部楼层 |阅读模式
2个32单片机可以通过按键控制进行发送或者接收信息,能够发固定的数据,也可以发送实时变化的数据。

单片机源程序如下:
  1. #include "main.h"//main.h 中含有TX/RX、软件SPI/硬件SPI选择配置选项


  2. const char *g_Ashining = "ashining";
  3. uint8_t g_TxMode = 0, g_UartRxFlag = 0;
  4. uint8_t g_UartRxBuffer[ 100 ] = { 0 };
  5. uint8_t g_RF24L01RxBuffer[ 32 ] = { 0 };



  6. /**
  7.   * @brief :主函数
  8.   * @param :无
  9.   * @note  :无
  10.   * @retval:无
  11.   */
  12. int main( void )
  13. {       
  14.         uint8_t i = 0;

  15.         //串口初始化
  16.         drv_uart_init( 9600 );
  17.        
  18.         //延时初始化
  19.         drv_delay_init( );
  20.        
  21.         //LED初始化
  22.         drv_led_init( );
  23.        
  24.         //SPI初始化
  25.         drv_spi_init( );
  26.        
  27.         //RF24L01引脚初始化
  28.         NRF24L01_Gpio_Init( );
  29.        
  30.         //检测nRF24L01
  31.         NRF24L01_check( );                       
  32.         RF24L01_Init( );
  33.        
  34.         led_red_off( );
  35.         led_green_off( );
  36.         for( i = 0; i < 6; i++ )
  37.         {
  38.                 led_red_flashing( );
  39.                 led_green_flashing( );
  40.                 drv_delay_500Ms( 1 );
  41.         }
  42.                
  43.        
  44. #ifdef        __RF24L01_TX_TEST__               
  45. //=========================================================================================//       
  46. //*****************************************************************************************//
  47. //************************************* 发送 **********************************************//
  48. //*****************************************************************************************//
  49. //=========================================================================================//       
  50.        
  51.         //按键初始化
  52.         drv_button_init( );
  53.        
  54.         RF24L01_Set_Mode( MODE_TX );                //发送模式
  55.         while( 1 )       
  56.         {
  57.                 //模式切换
  58.                 if( BUTOTN_PRESS_DOWN == drv_button_check( ))
  59.                 {
  60.                         g_TxMode = 1 - g_TxMode;                //模式会在 TX_MODE_1( 0 ),TX_MODE_2( 1 )之间切换
  61.                        
  62.                         //状态显示清零
  63.                         led_green_off( );
  64.                         led_red_off( );
  65.                        
  66.                         if( TX_MODE_1 == g_TxMode )
  67.                         {
  68.                                 for( i = 0; i < 6; i++ )               
  69.                                 {
  70.                                         led_red_flashing( );        //固定发送模式,红灯闪烁3次
  71.                                         drv_delay_500Ms( 1 );               
  72.                                 }
  73.                         }
  74.                         else
  75.                         {
  76.                                 for( i = 0; i < 6; i++ )
  77.                                 {
  78.                                         led_green_flashing( );        //串口发送模式,绿灯闪烁3次
  79.                                         drv_delay_500Ms( 1 );
  80.                                 }
  81.                         }
  82.                 }
  83.                
  84.                 //发送
  85.                 if( TX_MODE_1 == g_TxMode )
  86.                 {
  87.                         NRF24L01_TxPacket( (uint8_t *)g_Ashining, 8 );                //模式1发送固定字符,1S一包
  88.                         drv_delay_500Ms( 1 );       
  89.                         drv_delay_500Ms( 1 );       
  90.                         led_red_flashing( );                       
  91.                 }
  92.                 else
  93.                 {       
  94.                         //查询串口数据
  95.                         i = drv_uart_rx_bytes( g_UartRxBuffer );
  96.                        
  97.                         if( 0 != i )
  98.                         {
  99.                                 NRF24L01_TxPacket( g_UartRxBuffer, i );
  100.                                 led_red_flashing( );
  101.                         }
  102.                 }
  103.         }
  104.        
  105. #else               
  106. //=========================================================================================//       
  107. //*****************************************************************************************//
  108. //************************************* 接收 **********************************************//
  109. //*****************************************************************************************//
  110. //=========================================================================================//       
  111.        
  112.         RF24L01_Set_Mode( MODE_RX );                //接收模式
  113.         while( 1 )
  114.         {
  115.                 i = NRF24L01_RxPacket( g_RF24L01RxBuffer );                //接收字节
  116.                 if( 0 != i )
  117.                 {
  118.                         led_green_flashing( );
  119.                         drv_uart_tx_bytes( g_RF24L01RxBuffer,i);        //输出接收到的字节
  120.                        
  121.                 }
  122.         }
  123.                

  124.        
  125. #endif
  126.        
  127. }
复制代码

所有资料51hei提供下载:
Project_Rf24l01.7z (106.37 KB, 下载次数: 18)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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