我发现stm32f10x.h文件里进行了宏定义#define __O volatile /*!< defines 'write only' permissions */#define __IO volatile /*!< defines 'read / write' permissions */
但是通过网上查询对volatile没有太明白,想请问一下各位有没有什么简单的理解方式,我不要求太深入、太专业,只要能让我这个新人简单明白大概的作用即可,能举出例子更好。
非常感谢各位的教导!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
volatile作用:无论何时,编译器读取变量都从地址上读取。
情况:在某些编译器下,编译器优化读取方式,若某段时间内程序没有对变量进行改变,编译器读取的值为上次的值。
例子:
PA5,在某段时间内,程序没有对PA5进行设置,在下次读取时,编译器会自动把上个值直接读取出来,
如果PA5是输入口,电平改变了,编译器是不知道的,读取的只能为上次读取的值,
这个时候volatile的作用提现出来了:无论何时,读取变量都从地址上读,这样保证了读取到的值是实时的,准确的。
一周热门 更多>