为什么我这个程序下到板子里 会出现跑了一会儿就停止了或者距离远一些也停止了呢?
[复制链接]
为什么我这个程序下到板子里 会出现跑了一会儿就停止了或者距离远一些也停止了呢? #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=%d\n",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=%d\n",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=%d\n",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=%d\n",count1); //打印串口发送次数计数标志 LED0=!LED0; // flag=0; Sec_Cho_Sec++; if(Sec_Cho_Sec >= 10) //一次发送10个包 { Sec_Cho_Sec = 0; flag=0; } } } } } } }
|