Len 是一个全局变量,只在串口接收中断中自加而且执行 Len = 0;后Len都不等于0的 好奇怪
原来是这个问题啊,改成 Level 0(-O0)就行了 谢谢
降低优化才能成功,是不是就说明了你的程序中有一些不够规范的东西?
明天试试,现在板子不在。
volatile加在串口接收中断函数上面的,没在其他文件中用
写成 volatile u8 Len = 0; 也一样~~
这个变量只在串口中断里赋值
是啊 原来是<default>(据说相当于Level 2(-O2))
这个到底是为什么?为什么优化等级高会影响中断?
只知其然,不知其所以然
那楼主后来设置的是level 0? 要是设置1试试?看看是不是level1的优化造成的,我查了资料说level1是死代码删除!不知道是什么意思。