本文记录mini2440点亮led的操作流程;
点亮一颗led代码实现方式:汇编和C;
进行了一些功能扩展实验;
基本思路
看原理图确定控制led的引脚;
看主芯片手册确定如何控制引脚;
编写程序;
编译;
烧录bin文件;
看原理图
mini2440主芯片引脚图:
led电路图:
由于只要点亮一颗led,因此选择nLED_1。由原理图可知:nLED_1接线对应主芯片的GPB5引脚,且当GPB5输出低电平时,nLED_1会被点亮。而引脚则由寄存器控制,因此只要对GPB5引脚相关寄存器进行设置即可。
看芯片手册
S3C2440端口B相关寄存器:
由上图可知,S3C2440的I/O口B相关的寄存器有:
控制寄存器
上拉寄存器
S3C2440端口B控制寄存器:
由上图可知,B端口的控制寄存器可以将每个引脚配置为四种模式:
00输入模式
01输出模式
10功能扩展模式
11保留模式
若要使GPB5引脚输出低电平,须将GPB5配置为输出模式,即将Bit[11:10]配置为01。
由图“S3C2440端口B相关寄存器”可知,GPBCON的地址为0x56000010,因此将0x400写入地址0x56000010即可。
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,出现如下界面,表明烧录成功:
上一篇:mini2440启动过程
下一篇:一起学mini2440裸机开发(六)--UART原理与基础实验
推荐阅读最新更新时间:2024-11-02 00:18
设计资源 培训 开发板 精华推荐
- AVR超小开发板
- 91key键盘-基于ATmega32u4
- AD8034ARZ-REEL7 高速、单位增益峰值检测器的典型应用电路
- DC239A、LTC1502CMS8-3.3 演示板、单节电池输入、3.3V/10mA 输出、无电感 DC-DC 转换器
- 基于LM324的150W40A双管恒流电子负载
- STEVAL-IDI003V2,使用 LIS3DH 加速度计的多传感器 RF 评估平台传感器板
- 超迷你低成本ESP32开发板
- SY88932L EV、SY88932L 评估板,用于具有 50 欧姆输入端接的 3.3V、3.2Gbps SONET/SDH 激光驱动器
- 【CW32】无刷电机+583277A
- 便携式投影仪6A RGB LED驱动器参考设计