[AT32F403/403A] 日常Debug之:if(false)能运行?智子攻陷了我的MCU!!!

[复制链接]
994|6
 楼主| qcliu 发表于 2023-9-12 08:32 | 显示全部楼层 |阅读模式
BUG, MCU, UG, se
环境:AT32F403AVGT7、IAR8.30、J-LINK
现象:定时器中断里遇到 -1 <= 0 返回false的情况。如图:
5332964ffb16e27bfd.jpg

9620764ffb173a713f.jpg

8682064ffb179d2af3.jpg

出现了if(-1 > 0){}为True的情况。
是不是被智子监控了呢?

经过分析:发现
文件1.c:

int32_t s32G_HiTick=0;

文件2.c:

extern uint32_t s32G_HiTick;

文件2里的s32G_HiTick还是被认为是unsigned 类型,所以-1在unsigned的情况下是不可能为复数的。
破案了,世界和平依旧。
————————————————
版权声明:本文为CSDN博主「casdfxx」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/c_1969/article/details/132479456

tpgf 发表于 2023-10-9 16:39 | 显示全部楼层
这种问题一般非常不容易进行排查啊
drer 发表于 2023-10-9 16:53 | 显示全部楼层
我们可以小心的让数据不超过范围吗
wiba 发表于 2023-10-9 17:21 | 显示全部楼层
其实本质上就是数据发生了溢出现象是吗
kxsi 发表于 2023-10-10 16:23 | 显示全部楼层
这种数据类型不匹配的问题 我们一般从哪里开始进行排查呢
coshi 发表于 2023-10-10 16:45 | 显示全部楼层
为什么无符号的数据就不存在这个bug了呢
 楼主| qcliu 发表于 2023-10-10 17:32 | 显示全部楼层
coshi 发表于 2023-10-10 16:45
为什么无符号的数据就不存在这个bug了呢

当然了  因为无符号不存在负数啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

64

主题

3317

帖子

4

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