关键字volatile有什么含意? 并给出三个不同的例子
杨数Tos
共 1891字,需浏览 4分钟
·
2024-06-17 17:13
volatile unsigned int * const address = (unsigned int * const)0x12345678; // 将硬件寄存器地址赋值给指针
*address = 0x1234; // 向硬件寄存器写入数据
unsigned int value = *address; // 从硬件寄存器读取数据
volatile int sharedData; // 定义一个共享的变量
void threadA()
{
while(true)
{
// 对共享变量进行修改
sharedData++;
}
}
void threadB()
{
while(true)
{
// 对共享变量进行读取
printf("%d\n", sharedData);
}
}
volatile bool interruptFlag = false;
void interruptHandler()
{
interruptFlag = true; // 修改 volatile 标记的变量
}
void mainLoop()
{
while(true)
{
if(interruptFlag) // 检查 volatile 标记的变量
{
doInterrupt(); // 执行中断处理程序
interruptFlag = false; // 清除 volatile 标记的变量
}
// 执行其他任务
}
}
评论