[STM32F1] if语句见鬼了

[复制链接]
9982|44
computer00 发表于 2017-11-4 09:10 | 显示全部楼层
增加两个临时变量,把缓冲区里的数据传递进去再试试看?
通宵敲代码 发表于 2017-11-4 10:40 | 显示全部楼层
又用盗版!
ddllxxrr 发表于 2017-11-4 10:49 | 显示全部楼层
有各种优化方案,楼主选的优化方案就落在那儿
 楼主| 禁基的矮子 发表于 2017-11-4 12:59 | 显示全部楼层
ddllxxrr 发表于 2017-11-4 10:49
有各种优化方案,楼主选的优化方案就落在那儿

先试试把优化关了
小营七郎 发表于 2017-11-4 18:40 | 显示全部楼层
你重启以下编译器,把文件目录下的编译产生的中间垃圾全都删掉再来一遍估计就不会有这问题了.
大道至简 发表于 2017-11-4 20:53 | 显示全部楼层
这个有可能是仿真器的问题,我也不止一次看见这个问题。。。。。。
handlike 发表于 2017-11-4 22:42 | 显示全部楼层
换个写法

     if((temp==RX_buf[rx_cnt-1])&&(RX_buf[0]==0x00))
     {
         rx_add_flag=true;
     }
     else
    {
       rx_add_flag=false;
       return false;
    }
handlike 发表于 2017-11-4 22:48 | 显示全部楼层
以后还是少用二个否定关系或连接判断的语句
l4157 发表于 2017-11-4 23:39 | 显示全部楼层
volatile

评分

参与人数 1威望 +2 收起 理由
禁基的矮子 + 2 很给力!

查看全部评分

oayzw 发表于 2017-11-5 15:36 | 显示全部楼层
keil的调试器里有些变量的值没有实时更新,有时你看见的不是真实的值
linqing171 发表于 2017-11-5 20:24 | 显示全部楼层
贴反汇编。
ARM在ARM模式下,指令是有前缀的。有时候 if和else执行的是同样的指令,但是前缀不满足,指令相当于nop。在if内的代码少于3个汇编指令的时候,比清空流水线的代价要小。
lihui567 发表于 2017-11-6 08:16 | 显示全部楼层
是不是程序其他地方直接判断并往下执行了
blust5 发表于 2017-11-6 08:28 | 显示全部楼层
这个断点可能不是if里面,可能是判断完if语句之后,看下对应的汇编语句部分。
Houtz 发表于 2017-11-6 09:18 | 显示全部楼层
这种情况下可能是编译器开了优化所致,这样仿真的时候界面给人展现出来好像有些是不按逻辑执行,实际上CPU是按逻辑正确执行的。把优化级别改成-O0试试就可以了。专业STM32技术工程师,有问题可以跟我交流。375880228@qq.com
kingkits 发表于 2017-11-6 10:03 | 显示全部楼层
禁基的矮子 发表于 2017-11-3 16:46
修改了,只放了前面的一个条件,还是会跳转进去

如果是进入后面一个if
建议你在调用这个函数之前把rx_buf[]保存一下,
如果进入你的if(),你先确认你的数据是不是错误。

另一种办法是,先做个延时(大约接收一个字节所需的时间,看看),还有没有你说的那种情况
springvirus 发表于 2017-11-6 16:45 | 显示全部楼层
对于中断里对变量赋值,而在主程序里判断该变量,最好加上volatile
我在用MDK里,跑M058s程序调试碰到过

评分

参与人数 1威望 +2 收起 理由
禁基的矮子 + 2 赞一个!

查看全部评分

一路向北lm 发表于 2017-11-6 17:04 | 显示全部楼层
程序没问题,应该是收到中断的影响。把中断关了试下。
 楼主| 禁基的矮子 发表于 2017-11-6 18:28 | 显示全部楼层
springvirus 发表于 2017-11-6 16:45
对于中断里对变量赋值,而在主程序里判断该变量,最好加上volatile
我在用MDK里,跑M058s程序调试碰到过 ...

编译器提示我 volatie uint8 * 和const uint8 *冲突emmmmm
springvirus 发表于 2017-11-8 16:07 | 显示全部楼层
禁基的矮子 发表于 2017-11-6 18:28
编译器提示我 volatie uint8 * 和const uint8 *冲突emmmmm

不是一个变量吗,怎么两种定义
宇宙星辰 发表于 2017-11-9 18:48 | 显示全部楼层
解决没有?坐等
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部