gpt4 book ai didi

c - volatile 关键字 - MSP430

转载 作者:行者123 更新时间:2023-12-04 12:26:33 24 4
gpt4 key购买 nike

我正在尝试使 TI MSP430 Launchpad 板上的 LED 闪烁。我有两段代码。一个有效,而另一个无效。唯一的区别是在工作版本中包含了 volatile 关键字。为什么程序执行需要这个关键字?

此代码有效...

void main(void) {
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer

// Configure Port Directions
P1DIR |= 0x01; // 0000 0001

volatile unsigned int i;

for(;;)
{
P1OUT ^= 0x01; // Set P1.0 LED on
for (i = 20000; i > 0; i--); // Delay
}
}

虽然这段代码没有...

void main(void) {
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer

// Configure Port Directions
P1DIR |= 0x01; // 0000 0001

unsigned int i;

for(;;)
{
P1OUT ^= 0x01; // Set P1.0 LED on
for (i = 20000; i > 0; i--); // Delay
}
}

最佳答案

如果没有 volatile,编译器可以更自由地优化它认为什么都不做的代码,以及重新排序内存访问。不使用 volatile 时,您的延迟循环正在优化。

关于c - volatile 关键字 - MSP430,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17197624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com