|
一、利用三星已經寫好的初始化文件
1。先見項目文件夾
2。.建立項目保存在新建文件夾中
3。將ARM三星寫好的INIT文件夾中的INC和SRC兩個文件夾拖入新建文件夾中。
4。建立C文件,如LCD1602.c,編寫void xmain()函數,或void xxxx()函數
5。添加SRC中的2440init到項目中來。
6。將2440init中的相應主函數入口修改為LCD1602.c中的函數xmain,這一點很重要,這樣其他函數可通過添加頭文件編寫,否則沒法執行。見下圖


二、編寫自己的初始化
1。先建項目文件夾
2。再建立項目并保存在新建文件夾中(路徑用英文)
3。建立 自己的初始化函數init.s。初始化文件一定要用匯編語言。至少需要下列代碼(這個跟重要)
MPORT name AREA Init,CODE,READONLY
ENTRY
bl name
end
注意:name一定要是主函數名,其他函數可以按照C文件的一般編寫方法編寫,如下列程序代碼:
#include"2440addr.h" //定義了各個特殊功能寄存器地址和名稱,要使用必須調用該頭文件
/*=== 如果不調用該頭文件,必須把要使用的定義名稱和地址語句在主程序前聲明
#define rGPBCON (*(volatile unsigned *)0x56000010)//Port B control
#define rGPBDAT (*(volatile unsigned *)0x56000014)//Port B data
#define rGPBUP (*(volatile unsigned *)0x56000018)//Pull-up control */
/* 自定義簡單延遲程序 */
int name(int times)
{
int i;
for(i=0;i<times;i++);
return 0;
}
/* 主程序 */
void xmain(void) //主函數名稱與主函數入口地址對應,在2440init.s中有定義
{ //不能隨意寫成main,或者Main等,要查看在2440init.s文件(見下圖)
rGPBCON |=0x3fc00; //GPB5-8 able output,先讓11 1111 11xx xxxx xxxx
rGPBCON &=0x157ff; // 00-in 01-out 01 0101 01xx xxxx xxxx
// P8 P6P7 P5P4 P3P2 P1P0
// G G G G x x x x x
while(1)
{
rGPBDAT|=0x1e0;//GPB8 output 0 1 111x xxxx
rGPBDAT&=0xeff;// 0 111x xxxx
delay(5);//調用匯編語言編寫的延時程序
rGPBDAT|=0x1e0;//GPB7 output 0 1 111x xxxx
rGPBDAT&=0xf7f;// 1 011x xxxx
delay(5);//調用匯編語言編寫的延時程序
rGPBDAT|=0x1e0;//GPB6 output 0 1 111x xxxx
rGPBDAT&=0xfbf;// 1 101x xxxx
delay(5);//調用匯編語言編寫的延時程序
rGPBDAT|=0x1e0;//GPB5 output 0 1 111x xxxx
rGPBDAT&=0xfdf;// 1 110x xxxx
delay(5);//調用匯編語言編寫的延時程序
}
}
也可繼續按照下列步驟再添加
4。用添加頭文件的方式把自己需要的子函數以頭文件.h的方式編寫,需要幾個編寫幾個
5。編寫自己的主函數,主義主函數的名稱要用初始化函數中的名稱。
6。將以上文件添加到項目中來。
|
|