使用的STM8S003 8K空间小了,必须要用最高优化才能刚好装得下,上周末调程序的时候,出现一个问题,和预期的效果不一样 大致过程: 1、全部最高优化,出现问题:闪灯状态持续很久才退出,远远超出正常值 2、定位到出问题的函数(这个函数已经很久没有改动了,以前也没有出现过这个问题),一些条件和语句不能打断点,从汇编语言窗口看,这个断点打到另外一个函数相同的语句去了,所以肯定是被优化了 3、这个函数使用#pragma optimize=none不进行优化,这个是没有问题的 4、恢复全部最高优化,功能正常,没有复现问题,这两天我都没能复现问题。。。这个过程除了改优化级别没有改动过代码 大神们告诫,要从自己身上找原因,所以不先去怀疑编译器的问题,肯定还是我的代码写的不够好,不够精简,代码有点多,只贴直接相关的两个函数,当然也不排除问题出在其它函数 1409开始的这个函数只有1431行可以正常打断点,1425行可以打断点,但是指向的是右边1325行的地方,除此之外这个函数的其他语句就都不能打断点了,而不能打断点的语句决定是否退出闪灯状态,大神们能不能看出是什么原因 另外我想问问大家一般优化级别选的什么,有没有选最高优化出问题的,对于最高优化出问题的情况有没有方向去定位这个问题? |
能不能打断点,也得看汇编。
评分
查看全部评分
评分
查看全部评分