keil|编译的奇怪问题

2019-08-17 08:03发布



       sec_flag=1;
        
        while(1)
        {
                if(sec_flag)        
                {
                   。。。。。。。。。。。。。。
                   sec_flag=0;
                 }
         }

sec_flag在外部中断里也可以置“1”。但奇怪的是这段程序只执行一次就死了,外部中断置“1”无效(单步调试可以看到)。

把红 {MOD}这行删除,逻辑就正常了。

有碰到这种问题的吗?谢谢。



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
335920284
1楼-- · 2019-08-17 13:14
你把sec_flag定义时加上volatile试试,应该就可以了
电子之旅
2楼-- · 2019-08-17 15:04
打断点调试
Sun_Fly
3楼-- · 2019-08-17 16:35
 精彩回答 2  元偷偷看……
fghlw
4楼-- · 2019-08-17 20:20
电子之旅 发表于 2017-6-13 09:26
打断点调试

软仿单步调试,watch里直接观察到数值是对的。但没看过STM的汇编,要不很容易分析出来
fghlw
5楼-- · 2019-08-17 20:55
Sun_Fly 发表于 2017-6-13 09:43
printf  马上就找出来哪出问题了

打印“sec_flag”?
我觉得和这个没关系
去掉sec_flag=1;  其他什么也不改,反复实验,软件仿真硬件实际使用都正常
fghlw
6楼-- · 2019-08-17 22:35
顶一顶,有遇到类似问题的吗?

一周热门 更多>