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

STM8S103F3P在STVD在线调试下的离奇问题

[复制链接]
liutaominshida 提问时间:2016-12-10 16:10 /
最近有一个项目,采用的是STM8S103F3P,代码写完了之后,使用用ST-LINK在线进行调试,开发环境使用的是STVD+Cosmic.
定义了几个变量,由于是怕编译时被pass掉,所以在变量之前都加了volatile修饰。
在运行时,只是简单的执行变量自加操作,结果竟大出所料
1.png
这是跟踪进入中断执行代码时的对比,BlankingCounter和Phase变量执行自加时,只是从0变到1就不变了,而为了对比,我在中断当中增加了一个static局部变量,这个变量在进入四次中断之后,它的值变到了4,这是为什么呢?
收藏 1 评论7 发布时间:2016-12-10 16:10

举报

7个回答
仙景 回答时间:2016-12-15 07:30:06
这很简单的问题了,不知道你的BlankingCounter和Phase变量是定义在哪里?其次就是你这两个变量在哪里清。不要动不动就怀疑编译器有问题,其实绝大多数是你的逻辑有问题。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

无薪税绵 回答时间:2016-12-15 08:15:52
可能被优化掉了,建议每行增加一个NOP.

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

斜阳 回答时间:2016-12-15 09:00:06
stm32调试也遇到过类似的情况,都是把局部变成全局或静态之后调试的

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

z258121131 回答时间:2016-12-15 09:08:33
检查下逻辑
cldym 回答时间:2016-12-15 09:29:45
可能被优化掉了
peter001 回答时间:2016-12-15 13:11:38
查看编译器优化等级

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

JXEE 回答时间:2016-12-15 15:53:59
同意二楼啊,这个编译环境我用过一段时间,很多感觉奇怪的问题仅仅是因为自己不了解而已。
检查其他调用这两个变量的地方有没有做过相应的操作。
关于编译器的一些特性可以参考编译器手册《cosmic c cross compiler user's guide for stm8》

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

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