完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
为什么我这个程序下到板子里 会出现跑了一会儿就停止了或者距离远一些也停止了呢?
#include <STM32f10x_lib.h> #include "sys.h" #include "usart.h" #include "delay.h" #include "led.h" #include "key.h" #include "24l01.h" //收发都做在一个函数里面,通过按键来确定进入发送模式,还是接收模式 int main(void) { u8 key,mode; u16 count1,count2; u8 tmp_buf[33]={'1','2','3','4','5'}; u8 flag=0; u8 Sec_Cho_Fir=0,Sec_Cho_Sec=0; //二次选择 Stm32_Clock_Init(9);//系统时钟设置 delay_init(72); //延时初始化 uart_init(72,9600); //串口1初始化 KEY_Init(); //按键初始化 LED_Init(); //LED初始化 NRF24L01_Init(); //初始化NRF24L01 while(NRF24L01_Check())//检测不到24L01 //检查无线模块是否存在,不影响时间 { LED0=!LED0;//DS0闪烁 } /////////////////////////////正式选择部分//////////////////////////////////////// while(1) //在该部分确定进入哪个模式! { key=KEY_Scan(); if(key==1) { mode=0; break; }else if(key==2) { mode=1; break; } } /////////////////////////////mode==0//////////////////////////////////////// if(mode==0) { while(1) { if(0==flag) { RX_Mode(); //接收模式 while(0==flag) { if(NRF24L01_RxPacket(tmp_buf)==0) //一旦接收到信息 点亮LED0 { count1++; printf("count1=%dn",count1); //打印串口发送次数计数标志 LED0=!LED0; Sec_Cho_Fir++; if(Sec_Cho_Fir>=10) { flag=1; Sec_Cho_Fir=0; } } } } if(0!=flag) { TX_Mode(); //发送模式 while(0!=flag) { if(NRF24L01_TxPacket(tmp_buf)==TX_OK) { count2++; printf("count2=%dn",count2); LED1=!LED1; // flag = 0; Sec_Cho_Fir++; if(Sec_Cho_Fir>=10) { flag=0; Sec_Cho_Fir=0; } } } } } } else /////////////////////////////mode==1//////////////////////////////////////// { while(1) { if(0==flag) { TX_Mode(); //发送模式 while(0==flag) { if(NRF24L01_TxPacket(tmp_buf)==TX_OK) { count2++; printf("count2=%dn",count2); LED1=!LED1; Sec_Cho_Sec++; if(Sec_Cho_Sec >= 10) //一次发送10个包 { Sec_Cho_Sec = 0; flag=1; } } } } if(0!=flag) { RX_Mode(); //接收模式 while(0!=flag) { if(NRF24L01_RxPacket(tmp_buf)==0) //一旦接收到信息 点亮LED0 { count1++; printf("count1=%dn",count1); //打印串口发送次数计数标志 LED0=!LED0; // flag=0; Sec_Cho_Sec++; if(Sec_Cho_Sec >= 10) //一次发送10个包 { Sec_Cho_Sec = 0; flag=0; } } } } } } } |
|
相关推荐
7个回答
|
|
不知道你说的停止是什么意思,跑飞了还是死循环了。而且我觉得这个程序很危险,用了很多while(1)循环,但是退出的条件又不完整,就出现了很多死循环的机会。
|
|
|
|
是滴!我参考修改一下!
|
|
|
|
同意,我写程序的过程中尽量避免用while(1)加break实现循环,还尽量避免用goto,因为这两种看似很简单的方法,很捷径的方法,如果处理过程有疏忽,经常会死在哪里都不知道。
|
|
|
|
自己用jtag跟踪一下.
|
|
|
|
这个无线模块也可以跟踪?、?
|
|
|
|
可以啊
|
|
|
|
这个我来试一试再说。
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1786 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1622 浏览 1 评论
1089 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
730 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1680 浏览 2 评论
1942浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
739浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
576浏览 3评论
598浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
560浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 17:06 , Processed in 1.027365 second(s), Total 90, Slave 74 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号