新手入门
- 积分
- 17
- 金钱
- 17
- 注册时间
- 2022-4-22
- 在线时间
- 5 小时
|
5金钱
如题,本人将无线通信的部分代码加入到ADC例程里面,希望当没有按键按下时能够不停的进行ADC模块,当有按键按下时,停止ADC模块并传输不同的语句。编译能够通过,但实际运行时只有开始时能够运行一下ADC模块,之后KEY_RIGHT按键仿佛是默认按下了一样,我没有按下但程序自动进入了按下之后的那个循环(另一块板子能正常接收)。我试着更改了条件,让KEY_RIGHT按下时什么也不做,用来试优先级比它低的KEY_DOWN按键是否也默认按下了,答案是程序认为该按键也按下了。
我已经通过下载普通无线通信例程的方式确认了按键本身没有问题,问题应该出自代码。
我修改的代码如下(大部分都是例程没有修改,在此处略去了一部分初始化内容):
while(key==0)
{
adcx=Get_Adc_Average(ADC_Channel_1,10);
temp=(float)adcx*(3.3/4096);
adcx=temp;
LCD_ShowxNum(156,190,adcx,1,16,0);
temp-=adcx;
temp*=1000;
LCD_ShowxNum(172,190,temp,3,16,0X80);
LED0=!LED0;
delay_ms(250);
{
key=KEY_Scan(0);
if(key==KEY_RIGHT)
{
mode=0;
break;
}else if(key==KEY_DOWN)
{
mode=1;
break;
}
t++;
if(t==100)LCD_ShowString(10,150,230,16,16,"Choose the message!");
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)
{
NRF24L01_TX_Mode();
mode=' ';
while(1)
{
if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
{
LCD_ShowString(30,150,239,32,16,"Sended DATA:");
LCD_ShowString(0,170,239,32,16,tmp_buf);
sprintf((char*)tmp_buf,"Sentence1 \r\n");
tmp_buf[32]=0;
}
LED0=!LED0;
delay_ms(1500);
};
}
else if(modes==1)
{
NRF24L01_TX_Mode();
mode=' ';
while(1)
{
NRF24L01_TX_Mode();
mode=' ';
while(1)
{
if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
{
LCD_ShowString(30,150,239,32,16,"Sended DATA:");
LCD_ShowString(0,170,239,32,16,tmp_buf);
sprintf((char*)tmp_buf,"Sentence2 \r\n");
tmp_buf[32]=0;
}
LED0=!LED0;
delay_ms(1500);
};
}
}
}
本人使用的开发板具体是战舰V2开发板,芯片是STM32F103ZET6.
|
|