野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16476|回复: 2

编译环境MDk 对于if else 的bug

[复制链接]
发表于 2015-7-26 17:06:28 | 显示全部楼层 |阅读模式
老师好,我刚学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);
     }
}
123.jpg
理论上 当第一次输入数据后 key值为2,第二次输入时 key值应为1 ,可实际 key 值仍为2 也就是说 if else 语句在判断条件时出错。这是怎么回事?
另外,老师有关于串口连续输入的c文件没,有的话 ,恳请老师发一份2496836848@qq.com,谢谢!


回复

使用道具 举报

发表于 2015-7-27 08:53:44 | 显示全部楼层
这是你自己变量定义有问题
把key定义成 static u8 key;
就可以了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-30 09:41:06 | 显示全部楼层
谢谢老师!
回复

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-16 12:57 , Processed in 0.031427 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表