1、看一下你的变量是怎么定义与声明的吧。最好是贴一下代码。
2、全局变量要在使用的地方进行声明,或是在头文件中声明成全局变量extern的方式。
3、是不是优化等太高了,而这个变量没有实际的用处,被优化了呢,降低优化等级试试
4、还有就是看看哪些地方使用了这个变量,是不是值又被修改了
__IO 举个例子 uint32_t需要改为如下 __IO uint32_t
“两个下划线IO”在Cortex_M中是定义为volatile类型的。一般来说,计时中断里的关键变量都需要加“两个下划线IO”符号, 即定义为volatie,以防止程序因为优化提高访问速度而从cache中读取不是最新的数据。你的情况,应该就是变量的值虽然已经被修改,但程序依然读取cache中的老的值。建议把你操作的那个全局变量定义为volatie类型,保证程序每次都从该变量的地址读取最新的数据,这一点很重要。
“两个下划线IO”在Cortex_M中是定义为volatile类型的。
一般来说,计时中断里的关键变量都需要加“两个下划线IO”符号,
即定义为volatie,
以防止程序因为优化提高访问速度而从cache中读取不是最新的数据。
你的情况,应该就是变量的值虽然已经被修改,
但程序依然读取cache中的老的值。
建议把你操作的那个全局变量定义为volatie类型,
保证程序每次都从该变量的地址读取最新的数据,这一点很重要。