适用于MINI2440的实例3程序:修改自《嵌入式Linux应用开发完全手册》P84
MINI2440的LED和书中所说LED接口一致,分别是:
- LED1,GPB5
- LED2,GPB6
- LED3,GPB7
- LED4,GPB8
而按键不同,根据MINI2440的说明书和电路图可知:
- K1, GPG0
- K2, GPG3
- K3, GPG5
- K4, GPG6
- K5, GPG7
- K7, GPG11
而书中介绍的按键的通用输入输出口不一样,所以整个程序修改如下:
#define GPBCON (*(volatile unsigned long *)0x56000010) #define GPBDAT (*(volatile unsigned long *)0x56000014)
#define GPGCON (*(volatile unsigned long *)0x56000060) #define GPGDAT (*(volatile unsigned long *)0x56000064)
#define GPB5_out (1<<(5*2)) #define GPB6_out (1<<(6*2)) #define GPB7_out (1<<(7*2)) #define GPB8_out (1<<(8*2))
#define GPG0_in ~(3<<(0*2)) #define GPG3_in ~(3<<(3*2)) #define GPG5_in ~(3<<(5*2)) #define GPG6_in ~(3<<(6*2))
int main() { unsigned long dwDat; GPBCON = GPB5_out | GPB6_out | GPB7_out | GPB8_out ;
GPGCON = GPG0_in & GPG3_in & GPG3_in & GPG6_in;
while(1){ dwDat = GPGDAT;
if (dwDat & (1<<0)) GPBDAT |= (1<<5); else GPBDAT &= ~(1<<5);
if (dwDat & (1<<3)) GPBDAT |= (1<<6); else GPBDAT &= ~(1<<6);
if (dwDat & (1<<5)) GPBDAT |= (1<<7); else GPBDAT &= ~(1<<7);
if (dwDat & (1<<6)) GPBDAT |= (1<<8); else GPBDAT &= ~(1<<8); }
return 0; }
|