新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于MINI2440開發(fā)板的LED流水燈實(shí)驗(yàn)(含init.s)

基于MINI2440開發(fā)板的LED流水燈實(shí)驗(yàn)(含init.s)

作者: 時(shí)間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
晚上看完了S3C2140A的GPIO開發(fā)部分,然后對著2440的數(shù)據(jù)手冊寫了個(gè)LED的小程序,總結(jié)下,程序如下:
初始化部分程序: Init.s
IMPORT Main
CODE32
AREA Init,CODE,READONLY
ENTRY
ldr r0, =0x53000000;關(guān)門狗
mov r1, #0x0
str r1, [r0] ;關(guān)閉關(guān)門狗
ldr sp, =1024*4 ;設(shè)置堆棧,由于main函數(shù)里調(diào)用了其他函數(shù),所以一定要設(shè)置堆棧

bl Main
main_loop
b main_loop
END
主程序:mian.c


#define GPBCON (*(volatile unsigned *)0x56000010)
#define GPBDAT (*(volatile unsigned *)0x56000014)
#define GPBUP (*(volatile unsigned *)0x56000018)

void delay(unsigned int dly);

void Main()
{
GPBCON= 0x15400;
GPBUP=0xFFFF;
while(1)
{
GPBDAT&=~0x20;
delay(120);
GPBDAT&=~0x60;
delay(120);
GPBDAT&=~0xE0;
delay(120);
GPBDAT&=~0x1E0;
delay(120);
GPBDAT|=0x20;
delay(120);
GPBDAT|=0x60;
delay(120);
GPBDAT|=0xE0;
delay(120);
GPBDAT|=0x1E0;
}
}
void delay(unsigned int dly)
{
unsigned int i;
for(;dly>0;dly--)
for (i = 0;i < 1000; i++);
}
這里有個(gè)要注意的是,在VIVI里下載到SDRAM運(yùn)行時(shí),因?yàn)閂IVI設(shè)置了系統(tǒng)時(shí)鐘,發(fā)型程序運(yùn)行異常時(shí),可以將延時(shí)函數(shù)的參數(shù)設(shè)置大些,延長延時(shí)程序。反過來如果在SDRAM里運(yùn)行正常,而用VIVI下載到NAND Flash里運(yùn)行時(shí)異常,那是因?yàn)橥獠繒r(shí)鐘相對要慢很多,可以將延時(shí)程序的參數(shù)設(shè)置小些,減少延時(shí)程序時(shí)間。


關(guān)鍵詞: MINI2440LED流水

評(píng)論


技術(shù)專區(qū)

關(guān)閉