历史上的今天
今天是:2024年10月30日(星期三)
2019年10月30日 | 三星2440 ARM初始化
2019-10-30 来源:eefocus
一、利用三星已经写好的初始化文件
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
}
/* 主程序 */
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。将以上文件添加到项目中来。
上一篇:ARM读取DS1302汇编程序
下一篇:ARM 2440裸奔实现电子时钟
史海拾趣
|
前段时间买了2440开发板也没怎么搞,惭愧:$ 最近没啥其它事情就好好啃啃吧,哎……没什么基础啊,先欣赏下别人的东西吧 【mini2440开发板实现国际象棋人机对弈 】 我在机子上跑了一下,好像不太能跟电脑对弈啊,不知道哪个地方还有问题 ...… 查看全部问答> |
|
VC如何发彩信,已经实现ATDT*99***1#这一步了,下一步应该是什么,内容打包?如果打包? VC如何发彩信,已经实现ATDT*99***1#这一步了,下一步应该是什么,内容打包?如果打包? ATE AT+CMGF=0 AT+CIMI AT+CIMI获得IMSI IMSI 国际移动用户识别码(IMSI) international mobile subscriber identity 国际上为唯一识别 ...… 查看全部问答> |
|
/*进行SAA7121H的初始化*/ GPIO_RSET(GPVAL,0x0); addrI2C = 0xB8 >>1; /*选择第0路的I2C的地址*/ /*将第0路的视频输入口的数据口设为高阻状态, 使能SCLK,将第27脚设为输入*/ _IIC_write(hSeeddm642i2 ...… 查看全部问答> |
|
问题是这样的:我用flash烧写了一个控制电机的程序,不能运行,就把代码改了一下,再进行烧程序的时候就烧不进去啦,我也没有动“lock”和密码(在flash烧写的时候一直很小心的),怎么会锁住呢?很是不解。请EEWORLD老师和各位高手解答一下,谢谢 ...… 查看全部问答> |
|
各位高手,小弟近日在学习关于修改BSP的内容,有一种想法,设置多个引导行,然后在系统启动时按照需要选择相应的引导顺序,然后将config.h中的引导行 #define DEFAULT_BOOT_LINE \\ \"fd=0,0(0,0)host:/fd0/vxWorks.st h=90.0.0.3 e=90.0.0.50 u=ta ...… 查看全部问答> |
|
我是一个只有初中毕业没有读过多少书的人从小就爱好无线电记得很小的时候当通讯兵的父亲带回来几本电子方面的书籍从此就迷上了无线电那种痴迷程度决不亚于现在的小孩迷恋游戏机至今仍然清楚的记得曾经因为装成功一台6管收音机而兴奋的几天几夜没睡 ...… 查看全部问答> |




