[Arm] arm常见问题记录

2015.5.25 什么是volatile?

volatile的作用是: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值

因为编译器会优化代码,因此而省略掉一些编译器认为“没用”的代码,但实际上我们需要保留他们。
例如:

cXBYTE[2]=0x55;
XBYTE[2]=0x56;
XBYTE[2]=0x57;
XBYTE[2]=0x58;

编译器只会保留最后一句指令,但是全部加上volatile之后编译器就会生成四条指令。

2015.5.25 _WDWORD()的作用?

_WDWORD(0xE0042004, 0x00000027); // DBGMCU_CR
这一句表示想 0xE0042004地址处写入 0x000000027,这个寄存器是各个位表示的含义在注释中给出了详细的解释。 0x27即表示
BIT0 DBG_SLEEP
BIT1 DBG_STOP
BIT2 DBG_STANDBY
BIT5 TRACE_IOEN

你可能感兴趣的:(嵌入式,arm)