查看: 1805|回复: 0

MDK 编译环境 下 if else 问题

[复制链接]

该用户从未签到

发表于 2015-7-25 11:24:45 | 显示全部楼层 |阅读模式
分享到:
我初学 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 语句在判断条件时出错。这是怎么回事? 请教大神。。。

评分

参与人数 1与非币 +5 收起 理由
loveeeboard + 5 三周年铜板双倍!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条



手机版|小黑屋|与非网

GMT+8, 2024-12-25 09:21 , Processed in 0.147540 second(s), 19 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.