nxxdydrq 发表于 2024-12-9 11:41:52

32G8K64 最简单的C代码都运行异常

<p>如图所示,if(admark==0X00000000),这个条件应该是符合的,进入return 0这条指令执行,可实仿真的时候直接就执行后面的代码了,太扯了吧,编译优化等级已经调成0了,这是我从stm32转到stc的第一个项目,难道要我转回去?还希望stc的技术能出来解答一下</p>
<p><img src="data/attachment/forum/202412/09/113840k1118311p42drd81.png" alt="1733715368447.png" title="1733715368447.png" /></p>

VCC 发表于 2024-12-9 11:45:15

排查这个变量是否在中断里被修改过,如果被修改过,需要加volatile修饰关键字

nxxdydrq 发表于 2024-12-9 11:55:56

VCC 发表于 2024-12-9 11:45
排查这个变量是否在中断里被修改过,如果被修改过,需要加volatile修饰关键字 ...
这个变量只是一个全局的临时变量,没有被中断用过

bkeuqoaq 发表于 2024-12-9 13:02:02

难道是猜吗,直接查看下就变量值

tzz1983 发表于 2024-12-9 13:15:24

<p>尔...对照汇编来看吧,或许很快就知道结果了.</p>
<p>还是那句话,编译没那么多BUG,硬件也没那么多BUG,</p>
<p>出问题先找原因,大多数情况后来都被发现是自己的原因。</p>

cnos 发表于 2024-12-9 13:16:18

<p>admark是什么类型的变量,整个源码去掉需保密的部分丢上来吧</p>

LAOXU 发表于 2024-12-9 13:37:35

if(admark==0X00000000)

改成 if(admark==0**x**00000000)

giveyou 发表于 2024-12-9 13:40:08

<p>代码也不全</p>

tubulvxing 发表于 2024-12-9 13:41:06

<p>楼主,找到原因没</p>

LAOXU 发表于 2024-12-9 13:42:17

if(admark==0X00000000)

改成 if(admark==0x00000000),试试
页: [1] 2 3 4
查看完整版本: 32G8K64 最简单的C代码都运行异常