找回密码
 立即注册

QQ登录

只需一步,快速开始

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

NRF24L01无线通信实验stm32程序

[复制链接]
跳转到指定楼层
楼主
ID:225199 发表于 2017-8-6 15:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
全部资料下载地址:
实验33 NRF24L01无线通信实验改.rar (518.54 KB, 下载次数: 28)


  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"
  5. #include "lcd.h"
  6. #include "spi.h"
  7. #include "key.h"
  8. #include "24l01.h"

  9. //ALIENTEK 探索者STM32F407开发板 实验33
  10. //NRF24L02无线通信实验-库函数版本

  11. //要写入到W25Q16的字符串数组
  12. const u8 TEXT_Buffer[]={"Explorer STM32F4 SPI TEST"};
  13. #define SIZE sizeof(TEXT_Buffer)         
  14.        
  15. int main(void)
  16. {
  17.         u8 key,mode;
  18.         u16 t=0;                         
  19.         u8 tmp_buf[33];       
  20.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
  21.         delay_init(168);  //初始化延时函数
  22.         uart_init(115200);        //初始化串口波特率为115200
  23.         LED_Init();                                        //初始化LED
  24.         LCD_Init();                                        //LCD初始化  
  25.         KEY_Init();                                        //按键初始化
  26.         NRF24L01_Init();                    //初始化NRF24L01

  27.         POINT_COLOR=RED;//设置字体为红色
  28.         LCD_ShowString(30,50,200,16,16,"Explorer STM32F4");       
  29.         LCD_ShowString(30,70,200,16,16,"NRF24L01 TEST");       
  30.         LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
  31.         LCD_ShowString(30,110,200,16,16,"2017/8/5");
  32.         while(NRF24L01_Check())
  33.         {
  34.                 LCD_ShowString(30,130,200,16,16,"NRF24L01 Error");
  35.                 delay_ms(200);
  36.                 LCD_Fill(30,130,239,130+16,WHITE);
  37.                 delay_ms(200);
  38.         }
  39.         LCD_ShowString(30,130,200,16,16,"NRF24L01 OK");          
  40.         while(1)
  41.         {       
  42.                 key=KEY_Scan(0);
  43.                 if(key==KEY0_PRES)
  44.                 {
  45.                         mode=0;   
  46.                         break;
  47.                 }else if(key==KEY1_PRES)
  48.                 {
  49.                         mode=1;
  50.                         break;
  51.                 }
  52.                 t++;
  53.                 if(t==100)LCD_ShowString(10,150,230,16,16,"KEY0:RX_Mode  KEY1:TX_Mode"); //闪烁显示提示信息
  54.                 if(t==200)
  55.                 {       
  56.                         LCD_Fill(10,150,230,150+16,WHITE);
  57.                         t=0;
  58.                 }
  59.                 delay_ms(5);          
  60.         }   
  61.         LCD_Fill(10,150,240,166,WHITE);//清空上面的显示                  
  62.         POINT_COLOR=BLUE;//设置字体为蓝色          
  63.         if(mode==0)//RX模式
  64.         {
  65.                 LCD_ShowString(30,150,200,16,16,"NRF24L01 RX_Mode");       
  66.                 LCD_ShowString(30,170,200,16,16,"Received DATA:");       
  67.                 NRF24L01_RX_Mode();                  
  68.                 while(1)
  69.                 {                                                                                   
  70.                         if(NRF24L01_RxPacket(tmp_buf)==0)//一旦接收到信息,则显示出来.
  71.                         {
  72.                                 tmp_buf[32]=0;//加入字符串结束符
  73.                                 LCD_ShowString(0,190,lcddev.width-1,32,16,tmp_buf);   
  74.                         }else delay_us(100);          
  75.                         t++;
  76.                         if(t==10000)//大约1s钟改变一次状态
  77.                         {
  78.                                 t=0;
  79.                                 LED0=!LED0;
  80.                         }                                     
  81.                 };       
  82.         }else//TX模式
  83.         {                                                            
  84.                 LCD_ShowString(30,150,200,16,16,"NRF24L01 TX_Mode");       
  85.                 NRF24L01_TX_Mode();
  86.                 mode=' ';//从空格键开始  
  87.                 while(1)
  88.                 {                                                              
  89.                         if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
  90.                         {
  91.                                 LCD_ShowString(30,170,239,32,16,"Sended DATA:");       
  92.                                 LCD_ShowString(0,190,lcddev.width-1,32,16,tmp_buf);
  93.                                 key=mode;
  94.                                 for(t=0;t<32;t++)
  95.                                 {
  96.                                 key++;
  97.                                 if(key>('~'))key=' ';
  98.                                 tmp_buf[t]=key;       
  99.                                 }
  100.                                 mode++;
  101.                                 if(mode>'~')mode=' ';            
  102.                                 tmp_buf[32]=0;//加入结束符                  
  103.                         }else
  104.                         {                                                                                          
  105.                                 LCD_Fill(0,170,lcddev.width,170+16*3,WHITE);//清空显示                          
  106.                                 LCD_ShowString(30,170,lcddev.width-1,32,16,"Send Failed ");
  107.                         };
  108.                         LED0=!LED0;
  109.                         delay_ms(1500);                                    
  110.                 };
  111.         }     
  112.                
  113. }

复制代码


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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