ARM接口设计实验指南手册

  • 格式:doc
  • 大小:2.61 MB
  • 文档页数:6

1.完成硬件接口实验基本步骤
(1)看懂相关硬件电路图,以LED报警灯为例进行设计
打开PDF硬件电路图,明确LED灯用到的多个GPIO及其控制器
本实验电路LED1-------GPM0
LED2-------GPM1
LED3-------GPM2
LED4-------GPM3
LED5-------GPM4
LED6-------GPM5
LED7-------GPQ0
LED8-------GPQ1
得出结论:8个LED灯使用到的硬件控制器分别为GPM和GPQ两个硬件控制器
(2)在芯片手册中找到相应的硬件控制器部分,重心是看懂端口寄存器
本实验要求完成LED流水灯设计,所以需要设置控制器中端口寄存器:
GPMCON----设置相应位为输出口
GPMDAT-----控制相应位输出高电平-----点亮LED灯
输出低电平-----熄灭LED灯
(3)打开ubuntu虚拟机,将参考实例代码中的Makefile和start.S拷贝到虚拟机中,如下所示:
用gedit 建立leddrv.c,基本代码如下:
//定义寄存器宏
如:#define rGPMCON *(volatile unsigned long *)0x7F008820
定义功能函数:
/*
功能:配置GPM0~5/GPQ0~1为输出口
参数:无
返回值:无
*/
void LedConfig(void)
{
rGPMCON=xxxxx;

}
/*
功能:点亮6个LED灯
参数:无
返回值:无
*/
void AllLedOn(void)
{
rGPMDAT=xxxxx;

}
/*
功能:熄灭6个LED灯
参数:无
返回值:无
*/
void AllLedOff (void)
{
rGPMDAT=xxxxx;

}
(4)编写主应用程序main.c
//本程序完成LED报警灯流水效果
//基于S3C6410处理器,无OS下运行
//时间:
//作者:
//email:
void main()
{
LedConfig();
while(1)
{
AllLedOn();
delay();
AllLedOff();
delay();
}
}
延时函数参考如下:
/*
功能:软件延时2秒左右
参数:无
返回值:无
*/
void delay()
{
volatile int i = 0x1000000;
while (i--);
}
(5)编写相关Makefile和汇编启动文件
见参考实验,可以直接拷贝过来,无需修改
在linux系统下编译,如图所示:
(6)编译并烧写代码
将带有启动文件的SD卡插入到笔记本上,其下目录文件应该如下:
备注:将生成的led.bin文件拷贝到images目录下,如上图所示。

打开FriendlyARM文件修改如下:
将SD卡放到拔出,插入实验平台,相关拨码开关如下图所示
插上电源,可以看到LED灯闪烁,大概10秒周期。

如下图所示:。