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