请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430FR5969 工具与软件:
全部、
我对嵌入式编程很陌生、但我熟悉 C。我设法让 简单的闪烁 LED 示例适用于我的 MSP430FR5969 TI Launchpad。
#include <msp430.h> void main(void) { WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer PM5CTL0 &= ~LOCKLPM5; // Disable the GPIO power-on default high-impedance mode to activate previously configured port settings P1DIR |= 0x01; // Set P1.0 to output direction volatile unsigned int i; // volatile to prevent optimization //unsigned int i; for (;;) { P1OUT ^= 0x01; // Toggle P1.0 using exclusive-OR i = 10000; // SW Delay while (i != 0) { i--; } } }
我对将 volatile 关键字 用于 I 有点好奇。 当我在没有 volatile 关键字的情况下进行尝试时、LED 根本不会闪烁、而是保持有效运行。 根据我在几个嵌入式相关网站上看到的内容、volatile 关键字用于这些情况。
- ISR 或多线程应用中的全局变量
- 存储器映射寄存器
然而、据我所知、我并不适合这些情况。 所以我有点困惑、不知道为什么编译器会对它进行优化。 是因为它在每个循环迭代中再次复位到10000吗?
谢谢!
Andy