1 #define reg _ gpio _ ctrl *(volatile int *)(ToVirtual(GPIO _ REG _ CTRL))
2 #define reg _ gpio _ data *(volatile int *)(ToVirtual(GPIO _ REG _ DATA))
3 /*初始化 LED*/
專業始於專一 卓識源於遠見
‐ 10 ‐
4 void LightInit(void)
5 {
6 reg _ gpio _ ctrl |= (1 << n); /*設置 GPIO 爲輸出*/
7 }
8
9 /*點亮 LED*/
10 void LightOn(void)
11 {
12 reg _ gpio _ data |= (1 << n); /*在 GPIO 上輸出高電平*/
13 }
14
15 /*熄滅 LED*/
16 void LightOff(void)
17 {
18 reg _ gpio _ data &= ~(1 << n); /*在 GPIO 上輸出低電平*/
19 }spa
須要理解#define reg _ gpio _ ctrl *(volatile int *)(ToVirtual(GPIO _ REG _ CTRL))指針
ToVirtual(GPIO _ REG _ CTRL) 表示一個數值,如0x20it
那麼 (volatile int *)(ToVirtual(GPIO _ REG _ CTRL) io
前面加(volatile int *) 表示0x20是個地址,並且這個地址類型是volatile int,有着固定的地址。變量
再在前面加"*":*(volatile int *)0x20則變成了變量co
*(volatile int *)0x20可看做是一個普通變量,這個變量有固定的地址,指向0x20。而0x20只是個常量,不是指針更不是變量。data
後面的代碼,就是針對這個地址進行賦值處理volatile