完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
1、该设计在主函数里只写了遥控器按键无线控制其他32单片机LED的亮灭,无线收发采用NRF2401模块,外部扩展了6轴MPU6050模块与4针I2C控制的OLED模块,遥感通过32芯片的ADC采集引脚采集遥感不同方向的电压值控制。
2、电路原理图 3、程序(基于正点原子实验33 NRF24L01无线通信实验程序修改) main函数修改 int main(void) { u8 key,mode; u16 t=0; u8 tmp_buf[33]; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组二 delay_init(168); //初始化延时 uart_init(115200); //串口波特率115200 LED_Init(); //初始LED LCD_Init(); //LCD初始化 KEY_Init(); //按键初始化 NRF24L01_Init(); //初始化NRF24L01 POINT_COLOR=RED;//设置为红色字体 LCD_ShowString(30,50,200,16,16,"Explorer STM32F4"); LCD_ShowString(30,70,200,16,16,"NRF24L01 TEST"); LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK"); LCD_ShowString(30,110,200,16,16,"2014/5/9"); while(NRF24L01_Check()) { LCD_ShowString(30,130,200,16,16,"NRF24L01 Error"); delay_ms(200); LCD_Fill(30,130,239,130+16,WHITE); delay_ms(200); } LCD_ShowString(30,130,200,16,16,"NRF24L01 OK"); while(1) { key=KEY_Scan(0); if(key==KEY0_PRES)//按下K0,为接收模式 { mode=0; break; }else if(key==KEY1_PRES)//按下K1,为发送模式 { mode=1; break; } t++; if(t==100)LCD_ShowString(10,150,230,16,16,"KEY0:RX_Mode KEY1:TX_Mode"); //闪烁显示提示 if(t==200) { LCD_Fill(10,150,230,150+16,WHITE); t=0; } delay_ms(5); } LCD_Fill(10,150,240,166,WHITE);//清空上面显示 POINT_COLOR=BLUE;//设置为蓝色字体 if(mode==0)//接收模式 { LCD_ShowString(30,150,200,16,16,"NRF24L01 RX_Mode"); LCD_ShowString(30,170,200,16,16,"Received DATA:"); NRF24L01_RX_Mode(); while(1) { if(NRF24L01_RxPacket(tmp_buf)==0)//显示接收消息 { tmp_buf[32]=0;//加入字符串结束符 LCD_ShowString(0,190,lcddev.width-1,32,16,tmp_buf); switch(tmp_buf[0]) { case 'A'://接收到A,LED都灭PF2,PF3高电平PF4,PF5低电平 LED0 = 1; LED1 = 1; GPIO_SetBits(GPIOF, GPIO_Pin_2 | GPIO_Pin_3); GPIO_ResetBits(GPIOF, GPIO_Pin_4 | GPIO_Pin_5); // delay_ms(500); // GPIO_ResetBits(GPIOF, GPIO_Pin_2 | GPIO_Pin_3); break; case 'B': LED0 = 1; LED1 = 0; GPIO_SetBits(GPIOF, GPIO_Pin_2 | GPIO_Pin_5); GPIO_ResetBits(GPIOF, GPIO_Pin_3 | GPIO_Pin_4); // delay_ms(100); // GPIO_ResetBits(GPIOF, GPIO_Pin_2 | GPIO_Pin_5); break; case 'C': LED0 = 0; LED1 = 1; GPIO_SetBits(GPIOF, GPIO_Pin_4 | GPIO_Pin_5); GPIO_ResetBits(GPIOF, GPIO_Pin_2 | GPIO_Pin_3); // delay_ms(500); // GPIO_ResetBits(GPIOF, GPIO_Pin_4 | GPIO_Pin_5); break; case 'D': LED0 = 0; LED1 = 0; GPIO_SetBits(GPIOF, GPIO_Pin_3 | GPIO_Pin_4); GPIO_ResetBits(GPIOF, GPIO_Pin_2 | GPIO_Pin_5); // delay_ms(100); // GPIO_ResetBits(GPIOF, GPIO_Pin_3 | GPIO_Pin_4); break; } } else delay_us(100); }; } else//发送模式 { LCD_ShowString(30,150,200,16,16,"NRF24L01 TX_Mode"); NRF24L01_TX_Mode(); mode = 0;//有一段延时没有发送则为接收模式 while(1) { key = KEY_Scan(1); //获取键值 if(key) { switch(key) { case WKUP_PRES: //按下KEY_UP发送A mode='A'; LED0=!LED0; break; case KEY0_PRES: mode='D'; LED0=!LED0; break; case KEY1_PRES: mode='C'; LED1=!LED1; break; case KEY2_PRES: mode='B'; LED0=!LED0; LED1=!LED1; break; } }else { tmp_buf[0] = mode; tmp_buf[31] = 0; //????? if(NRF24L01_TxPacket(tmp_buf) == TX_OK) { LCD_ShowString(30,170,239,32,16,"Sended DATA:"); LCD_ShowString(30,190,lcddev.width-1,32,16,tmp_buf); } else { LCD_Fill(0,170,lcddev.width,170+16*3,WHITE); LCD_ShowString(30,170,lcddev.width-1,32,16,"Send Failed "); }; mode = 0; delay_ms(10); } } } } LED函数配置 void LED_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10| GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOF, &GPIO_InitStructure); GPIO_SetBits(GPIOF,GPIO_Pin_9 | GPIO_Pin_10); GPIO_ResetBits(GPIOF, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5); |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1632 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1559 浏览 1 评论
985 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
688 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1605 浏览 2 评论
1869浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
652浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
521浏览 3评论
539浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
508浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 08:56 , Processed in 0.752626 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号