你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

如图,有没有人碰到过这样的问题啊?

[复制链接]
a707083746 提问时间:2015-8-17 08:59 /
Len 是一个全局变量,只在串口接收中断中自加而且执行 Len = 0;后Len都不等于0的

好奇怪

1.PNG
收藏 评论17 发布时间:2015-8-17 08:59

举报

17个回答
a707083746 回答时间:2015-8-17 09:45:33
Tension 发表于 2015-8-17 09:34
优化等级开得比较高,所以调试不方便。

原来是这个问题啊,改成 Level 0(-O0)就行了 谢谢
watershade 回答时间:2015-8-18 13:26:34
向问问楼主,你的volatile添加的位置。你的中断和使用是不是不在同一个文件中。然后有奖volatile只添加在定义中而非声明中?造成只在一个文件中有volatile。
降低优化才能成功,是不是就说明了你的程序中有一些不够规范的东西?
a707083746 回答时间:2015-8-18 22:09:54
watershade 发表于 2015-8-18 13:26
向问问楼主,你的volatile添加的位置。你的中断和使用是不是不在同一个文件中。然后有奖volatile只添加在定 ...

明天试试,现在板子不在。
volatile加在串口接收中断函数上面的,没在其他文件中用
watershade 回答时间:2015-8-17 09:04:24
设置成volatile
星辰一方 回答时间:2015-8-17 09:19:58
楼上正解,楼主可以试下,否则就是你的代码里其他地方误操作了
废鱼 回答时间:2015-8-17 09:29:12
添加到watch中看看,看光标没有执行LEN=0。退出if判断以后再看看值的内容。
a707083746 回答时间:2015-8-17 09:31:22

写成 volatile u8 Len = 0;  也一样~~
a707083746 回答时间:2015-8-17 09:32:07
星辰一方 发表于 2015-8-17 09:19
楼上正解,楼主可以试下,否则就是你的代码里其他地方误操作了

这个变量只在串口中断里赋值
Tension 回答时间:2015-8-17 09:34:59
优化等级开得比较高,所以调试不方便。
feiante 回答时间:2015-8-17 10:01:54
原来是优化的问题啊
a707083746 回答时间:2015-8-17 10:16:38
feiante 发表于 2015-8-17 10:01
原来是优化的问题啊

是啊  原来是<default>(据说相当于Level 2(-O2))
watershade 回答时间:2015-8-17 22:32:45
a707083746 发表于 2015-8-17 09:45
原来是这个问题啊,改成 Level 0(-O0)就行了 谢谢

这个到底是为什么?为什么优化等级高会影响中断?
a707083746 回答时间:2015-8-17 22:37:15
watershade 发表于 2015-8-17 22:32
这个到底是为什么?为什么优化等级高会影响中断?

只知其然,不知其所以然
watershade 回答时间:2015-8-18 08:49:52
a707083746 发表于 2015-8-17 10:16
是啊  原来是(据说相当于Level 2(-O2))

那楼主后来设置的是level 0? 要是设置1试试?看看是不是level1的优化造成的,我查了资料说level1是死代码删除!不知道是什么意思。
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版