由于STM32使用的Flash吃紧,使用了IAR的优化代码功能。
默认时None,优化后选择Medium。优化后,Code显著减小,大约20%。
优化完后,起初发现调试程序发现程序里面的while 语句后面不能打断点。
搜索后,推断可能和优化代码有关。取消优化后,果然可以打断点了。这倒是问题不大。
再后面试验中又发现莫名的卡在while里面不能出来。过了超时时间也不能跳出。
又是搜索后,发现依然和优化代码有关 ,在单纯空循环的语句中,如果什么都没有。会被优化掉。可以在空循环的里面增加nop语句,防止超时被优化。
比如下面的
改为:
delay中也要增加nop,否则不能达到延时的目的。