3554|5

68

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请问香水城COSMIC编译器问题 [复制链接]

   做单片机那么多年,一直没有去研究过编译器,最近用STM8S,遇到一些难题,解决不了,可能跟编译器的设定有关系,把问题反馈给代理商,等答案的过程中索性研究一下编译器<<C Cross Compiler User's Guide for ST Microelectronics STM8>>,英文486页啊!估计研究完老板就把我给炒了,看一点算一点吧,编译器这块小弟才疏学浅,可能会有很多问题陆陆续续提出来问香水城同志,麻烦了!
   第一个问题:43页讲到volatile的用法看不太明白,好象是寄存器名前需要加,一般的变量不用加吗?请详解.
此帖出自stm32/stm8论坛

最新回复

                                 谢谢汉之云.根据43说明,volatile必须要用在下面两种情况下:1:All data objects or variables associated with a memory mapped hardware register e.g.volatile char DDRB @0x05;-----data object或者variables是定义的HW的寄存器.2:All global variable that can be modified by an interrupt service routine either directly or indirectly.e.g.a global variable used as a counter in an interrupt service routine.---可以被中断服务程序改变的全局变量.   详情 回复 发表于 2009-5-15 14:33
点赞 关注
 

回复
举报

73

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

不要换楼,cosmic问题都在这里讨论吧

                                 voltatile 表示该变量可能由于非程序代码执行的原因而引起内容改变(比如I/O口状态).这样编译器就不会对这个变量的操作做优化,比如预先判断其值,改变其操作的顺序等等.
此帖出自stm32/stm8论坛
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

继续

                                 那除了CPU的寄存器可以用voltatile来定义,程序中的变量在什么情况下也可以用voltatile来定义?请举例,谢谢!
此帖出自stm32/stm8论坛
 
 

回复

101

帖子

0

TA的资源

一粒金砂(初级)

4
 

程序中用到的,不想被优化掉的中间变量等等

                                 知道了volatile的作用,就可以根据需要来使用
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

5
 

volatile在好多情况下都使用。

个人看法,volatile就是要把几个及其容易改变,而我们不想被编译器改变的变量前面加的一个关键字。
例如:我测量一个电压信号,这个信号是时时在改变的,但是我不想编译器来干预这件事情,不想编译器对这段代码做优化,所以,我前面加上volatile,不知道我理解的是否正确,请大侠指正。
此帖出自stm32/stm8论坛
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

6
 

两种情况需要用volatile

谢谢汉之云.
根据43说明,volatile必须要用在下面两种情况下:
1:All data objects or variables associated with a memory mapped hardware register e.g.volatile char DDRB @0x05;
-----data object或者variables是定义的HW的寄存器.

2:All global variable that can be modified by an interrupt service routine either directly or indirectly.e.g.a global variable used as a counter in an interrupt service routine.
---可以被中断服务程序改变的全局变量.

此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表