菜鳥級的arm接口實踐:
功能:軟件延時實現LED流水燈
電路圖
且LED1~LED4分別接端口GPB5~8;
實現代碼:
#define GPBCON (*(volatile unsigned *)0x56000010)//定義了GPB的控制寄存器
#define GPBDAT (*(volatile unsigned *)0x56000014)//定義了GPB的數據寄存器
#define GPBUP (*(volatile unsigned *)0x56000018)//GPB的上拉電阻寄存器
void delay(int time)
{
for(;time>0;time--)
;
}
void Main()//注意不要寫成了main!!
{
unsigned int temp=0xe<<5;
//端口控制寄存器,每兩個位控制一個端口
//00:輸入;01:輸出;
GPBCON=0x55<<10;
GPBUP=0x7ff; //上拉電阻不使能
while(1)
{
GPBDAT=temp; //點亮一個LED燈,0表示點亮
temp=((temp>>3)&(0xf<<5))|((temp<<1)&(0xf<<5));//實現第5到第8位循環
delay(0x2ffff); //延時一段時間
}
}
#define GPBDAT (*(volatile unsigned *)0x56000014)//定義了GPB的數據寄存器
#define GPBUP (*(volatile unsigned *)0x56000018)//GPB的上拉電阻寄存器
void delay(int time)
{
for(;time>0;time--)
;
}
void Main()//注意不要寫成了main!!
{
unsigned int temp=0xe<<5;
//端口控制寄存器,每兩個位控制一個端口
//00:輸入;01:輸出;
GPBCON=0x55<<10;
GPBUP=0x7ff; //上拉電阻不使能
while(1)
{
GPBDAT=temp; //點亮一個LED燈,0表示點亮
temp=((temp>>3)&(0xf<<5))|((temp<<1)&(0xf<<5));//實現第5到第8位循環
delay(0x2ffff); //延時一段時間
}
}