Volatile 的使用将变量定义为volatile表示告诉编译器该变量可能会被意想不到的改变,则优化器每次用到该值都重新从内存读取它。例如: volatile int *temp; int a1,a2; temp = (unsigned int *)0x0040; a1 = *temp; a2 = *temp;volatile用在如下的几个地方:1、中断服务程序中修改的供其它程序检测的变量需要加volatile;2、多任务环境下各任务间共享的标志应该加volatile;3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义; 如果一个变量的值可能会被程序操作之外的其它操作所改变,那么你必需用volatile 声明。在嵌入式系统中其它操作是:中断服务程序的操作、硬件动作的操作。用volatile声明的变量是不会被编译器优化掉的,如:volatile unsigned char PortA @0x0000;在嵌入式设备的所有外围器件寄存器都声明为volatile
Volatile
最新推荐文章于 2022-04-24 11:55:29 发布