学前班
最后登录1970-1-1
在线时间 小时
注册时间2015-7-26
|
老师好,我刚学stm32系列单片机,编写了一个USART的输入函数 ,发现 if else 在编译时正确 ,烧到板子里后 if else 无法实现正确条件判断。 代码如下:void USART1_IRQHandler(void)
{
u8 ch;
u8 key = 1;
if( USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
ch = USART_ReceiveData( USART1);
if( key==1 )
{
ByteData[0] = ch;
printf("\n\r 0x%02X \n\r",ByteData[0]);
key =2;
printf("\n\r %d \n\r",key);
}
else
{
ByteAddr = ch;
printf("\n\r 0x%02X \n\r",ByteAddr);
key =1;
printf("\n\r %d \n\r",key);
}
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
}
}
理论上 当第一次输入数据后 key值为2,第二次输入时 key值应为1 ,可实际 key 值仍为2 也就是说 if else 语句在判断条件时出错。这是怎么回事?
另外,老师有关于串口连续输入的c文件没,有的话 ,恳请老师发一份2496836848@qq.com,谢谢!
|
|