打印
[AT32F403/403A]

日常Debug之:if(false)能运行?智子攻陷了我的MCU!!!

[复制链接]
650|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qcliu|  楼主 | 2023-9-12 08:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
BUG, MCU, UG, se
环境:AT32F403AVGT7、IAR8.30、J-LINK
现象:定时器中断里遇到 -1 <= 0 返回false的情况。如图:






出现了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 | 只看该作者
其实本质上就是数据发生了溢出现象是吗

使用特权

评论回复
5
kxsi| | 2023-10-10 16:23 | 只看该作者
这种数据类型不匹配的问题 我们一般从哪里开始进行排查呢

使用特权

评论回复
6
coshi| | 2023-10-10 16:45 | 只看该作者
为什么无符号的数据就不存在这个bug了呢

使用特权

评论回复
7
qcliu|  楼主 | 2023-10-10 17:32 | 只看该作者
coshi 发表于 2023-10-10 16:45
为什么无符号的数据就不存在这个bug了呢

当然了  因为无符号不存在负数啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

63

主题

3316

帖子

4

粉丝