wenbo2005.online

学习记录 / STM32

_IO 相关

STM322024-03-07
1,count->只读

const int array[5] = {1,2,3,4,5};
count int i=5;

如果再改变i的值,则会提示错误!!它也能节省空间。

volatile 影响编译器编译的结果,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错。

例如:

volatile int i=10;
int j = i;

...

int k = i;

volatile 告诉编译器i是随时可能发生变化的,每次使用它的时候必须从i的地址中读取,因而编译器生成的可执行码会重新从i的地址读取数据放在k中。

所以说volatile可以保证对特殊地址的稳定访问,不会出错。

__I :输入口。既然是输入,那么寄存器的值就随时会外部修改,那就不能进行优化,每次都要重新从寄存器中读取。也不能写,即只读,不然就不是输入而是输出了。

__O :输出口,也不能进行优化,不然你连续两次输出相同值,编译器认为没改变,就忽略了后面那一次输出,假如外部在两次输出中间修改了值,那就影响输出

__IO:输入输出口,同上。