今天終於把ARM開發軟硬件平臺搭載完成,開始了ARM的學習之旅.剛接觸ARM7,感覺不知從哪裏入手比較好.因爲之前有單片機的開發基礎,就先把它當做單片機來使用,於是我重新開始學習"單片機"了.我當初就是從最簡單的LED閃爍實驗開始學習的,不凡也弄一個在ARM7上跑跑,通過這個實驗可以瞭解GPIO的基本操作.
跟51,AVR等單片機很相似,7S64也是通過對寄存器的操作來實現I/O口的輸入輸出,在本實驗中用到的寄存器有:PIO_PER(PIO使能寄存器),PIO_OER(PIO輸出使能寄存器),PIO_SODR(PIO置位輸出數據寄存器),PIO_CODR(PIO清零輸出數據寄存器).以下程序在MDK-ARM4.11上編譯通過並測試成功.
示例代碼:
#include<at91sam7s64.h>
#define uchar unsigned char
#define uint unsigned int
#define LED_MASK (1<<0)
AT91S_PIO * pPIO = AT91C_BASE_PIOA; /* Global Pointer to PIO */
void Delay(uint tt)
{
uint i;
while(tt-->0)
for(i=0;i<1000;i++);
}
main()
{
*AT91C_PMC_PCER = (1 << AT91C_ID_PIOA);
pPIO->PIO_PER = LED_MASK; /* Enable PIO for LED */
pPIO->PIO_OER = LED_MASK; /* LED is Output */
pPIO->PIO_SODR = LED_MASK; /* Turn off LED("1") */
while(1)
{
pPIO->PIO_CODR=LED_MASK;
Delay(1000);
pPIO->PIO_SODR=LED_MASK;
Delay(1000);
}
}