[学习笔记]ARM9-mini2440之点亮第一颗LED

2020-05-26来源: eefocus关键字:ARM9  mini2440  LED

本文记录mini2440点亮led的操作流程;

点亮一颗led代码实现方式:汇编和C;

进行了一些功能扩展实验;


基本思路

看原理图确定控制led的引脚;

看主芯片手册确定如何控制引脚;

编写程序;

编译;

烧录bin文件;


看原理图

mini2440主芯片引脚图:

mini2440主芯片引脚图

led电路图:

led电路图

由于只要点亮一颗led,因此选择nLED_1。由原理图可知:nLED_1接线对应主芯片的GPB5引脚,且当GPB5输出低电平时,nLED_1会被点亮。而引脚则由寄存器控制,因此只要对GPB5引脚相关寄存器进行设置即可。


看芯片手册

S3C2440端口B相关寄存器:

S3C2440端口B相关寄存器

由上图可知,S3C2440的I/O口B相关的寄存器有:


控制寄存器

数据寄存器

上拉寄存器

S3C2440端口B控制寄存器:

S3C2440端口B控制寄存器

由上图可知,B端口的控制寄存器可以将每个引脚配置为四种模式:


00输入模式

01输出模式

10功能扩展模式

11保留模式

若要使GPB5引脚输出低电平,须将GPB5配置为输出模式,即将Bit[11:10]配置为01。

由图“S3C2440端口B相关寄存器”可知,GPBCON的地址为0x56000010,因此将0x400写入地址0x56000010即可。


S3C2440端口B数据寄存器:

S3C2440端口B数据寄存器

由上图可知,引脚的状态与对应的位的状态相同,因而可以通过配置GPBDAT每一位的状态从而配置引脚的状态。

将数据寄存器的bit5配置为0即可把引脚GPB5配置为低电平。


S3C2440端口B上拉寄存器

在这里插入图片描述

当引脚的驱动能力不足时,需要配置上拉寄存器。由于引脚输出低电平即可点亮led,因此上拉寄存器无需配置。


总结:

以上可知,配置GPB5引脚输出低电平需要两个步骤:


配置控制寄存器GPBCON的Bit[11:10]=01,使GPB5引脚为输出模式;


配置数据寄存器GPBDAT的Bit5=0,使GPB5引脚输出低电平;


编写代码

完整代码分为两个部分,一个是汇编文件,一个是c文件。

start.S


.text

.global _start


_start:


/* 设置内存: sp 栈*/

ldr sp, =4096 /* nand启动 */

//ldr sp, =0x40000000+4096 /* nor启动 */ 


/* 调用main */

bl main


halt:

b halt


其中汇编文件中:


/* 设置内存: sp 栈*/

ldr sp, =4096 /* nand启动 */

//ldr sp, =0x40000000+4096 /* nor启动 */  


关于设置栈以及S3C2440启动方式的问题,将会在另一篇文章专门解释


led.c


int main()

{

unsigned int *p_con =(unsigned int *) 0x56000010;

unsigned int *p_dat =(unsigned int *) 0x56000014;


/* 配置GPB5引脚为输出模式 */

*p_con = 0x1000;


while(1)

{

/* 配置GPB5引脚输出低电平*/

*p_dat = 0;

}


return 0;


}


编译

编写Makefile:

为了编译方便,采用Makefile进行编译


all:

arm-linux-gcc -c -o start.o start.S

arm-linux-gcc -c -o led.o led.c

arm-linux-ld -Ttext 0 start.o led.o -o led.elf

arm-linux-objcopy -O binary -S led.elf led.bin

arm-linux-objdump -D led.elf > led.dis


clean:

rm *.dis *.o *.elf *bin


makefile编写完成之后,将项目文件夹通过FileZilla上传至Ubuntu虚拟机,使用MobaXterm远程登录Ubuntu,进入终端。

进入目标文件夹后,使用make命令进行编译:


编译成功。ls一下,查看生成的文件


生成了bin文件,确认编译成功。

再将生成的bin文件通过FileZilla下载至本地,开始烧录程序。


这里使用的Ubuntu是韦东山老师的百问网团队制作好的系统,使用的交叉编译工具链是:arm-linux-gcc-3.4.5版本


烧录程序

使用工具: oflash(百问网制作)


进入windows下的命令行界面:

进入目标目录

输入:

oflash led.c


显示如下界面:

在这里插入图片描述

选择 0.OpenJTAG,将显示如下界面:

在这里插入图片描述

选择 1.S3C2440,将显示如下界面:

在这里插入图片描述

选择 0:Nand Flash prog(选择Nor Flash也可,启动时注意启动时须将开关拨至Nor启动),将显示如下界面:

在这里插入图片描述

依然选择 0:Nand Flash Program,出现如下界面,表明烧录成功:

在这里插入图片描述

关键字:ARM9  mini2440  LED 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic498307.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:mini2440启动过程
下一篇:一起学mini2440裸机开发(六)--UART原理与基础实验

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

ADS1.2使用jlink调试程序(调试芯片s3c2440 arm9
点击Configure Target…点击Add,把JLINK安装目录下的JLinkRDI.ddl添加进来,然后退出ADX软件,再做以下工作:开发板上好电。J-link连接上开发板。(确保驱动已正确安装)把开发板设置从norflash启动,否则会失败。再打开ADX软件,如下图会自动弹出Jlink配置窗口:型号选择(s3c2440芯片是arm9的,所以这里选这个如果开发板正确连接会自动识别id):双击选择型号后,如下图表示已经配置成功,接下来就可以调试程序了。点击Edit,选择DebugRel Setings,编辑编译与调试的相关参数:点击Debug图标调试程序(会自动跳转AXD界面):接下来你就可以开始调试你的程序了。
发表于 2020-06-30
ADS1.2使用jlink调试程序(调试芯片s3c2440 <font color='red'>arm9</font>)
ARM9(S3C2440)的串口UART——程序实例讲解
串口通信程序编写步骤UART通信程序可以采用查询、中断和DMA模式。我们通过使用较多的中断方式来介UART通信程序的编写。简单做法是,UART通信程序的编写参照例子程序。选通道,通过函数Uart_Select();选UART0~UART2;选波特率和波特率发生器时钟,选波特率通过函数Uart_Pclk_En(int ch, int baud)或Uart_Pclk_En(int ch, int baud)来进行。时钟选UCLK ,rUCON0|=0x400;时钟选PCLK ,rUCON0&=0x3ff。通信协议(rULCON0)设定,如果正常通信,一位停止位,8位数据位,无奇偶效验: rULCON0=(0<<
发表于 2020-06-11
ADS1.2使用jlink调试程序(调试芯片s3c2440arm9)
点击Configure Target…点击Add,把JLINK安装目录下的JLinkRDI.ddl添加进来,然后退出ADX软件,再做以下工作:开发板上好电。J-link连接上开发板。(确保驱动已正确安装)把开发板设置从norflash启动,否则会失败。再打开ADX软件,如下图会自动弹出Jlink配置窗口:型号选择(s3c2440芯片是arm9的,所以这里选这个如果开发板正确连接会自动识别id):双击选择型号后,如下图表示已经配置成功,接下来就可以调试程序了。点击Edit,选择DebugRel Setings,编辑编译与调试的相关参数:点击Debug图标调试程序(会自动跳转AXD界面):接下来你就可以开始调试你的程序了。
发表于 2020-06-06
ADS1.2使用jlink调试程序(调试芯片s3c2440<font color='red'>arm9</font>)
arm9 mini2440 supervivi烧写方法
_defconfig make menuconfig(1).General setup --->       [*] Configure standard kernel features (for small systems) --->   选上这项,否则文件系统中的一些选项不会出现(2). System Type ---->      [*] S3C2410 DMA support [*] Support ARM920T processor    
发表于 2020-05-18
<font color='red'>arm9</font> mini2440 supervivi烧写方法
ARM9 mini2451裸机学习——NAND flash驱动学习 2
(*(volatile unsigned long *)(0x4e00000c))#define rNFDATA8  (*(volatile unsigned char *)(0x4e000010))#define rNFSTAT   (*(volatile unsigned long *)(0x4e000028))#define rGPACON  (*(volatile unsigned long *)(0x56000000))//NAND FLASH 使能函数#define NF_Enable() {rNFCONT &= ~(1<<1);} //选中芯片//NAND
发表于 2020-04-25
<font color='red'>ARM9</font> mini2451裸机学习——NAND flash驱动学习 2
一起学mini2440裸机开发(三)--S3C2440时钟学习
前言首先,我们应该知道一点,mini2440开发板在没有开启时钟前,整个开发板全靠一个12MHz的外部晶振提供频率来工作运行的,也就是说CPU、内存、UART、ADC等所有需要用到时钟频率的硬件都工作在12MHz下,而S3C2440A可以正常工作在400MHz下,可想而知两者速度相差会有多大了。如果CPU工作在12MHz频率下,开发板的使用效率非常低,所有依赖系统时钟工作的硬件,其工作效率也很低,比如,我们电脑里面经常提到的超频,超频就是让CPU工作在更高的频率下,让电脑运算速度更快,虽然频率是越高越好,但是由于硬件特性决定了任何一个设备都不可能无止境的超频,电脑超频时要考虑到CPU或主板发热过大,烧坏的危险,同样开发板的主板
发表于 2020-05-14
一起学mini2440裸机开发(三)--S3C2440时钟学习
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved