历史上的今天
今天是:2024年09月27日(星期五)
2021年09月27日 | LED的使用纯汇编和C语言的点亮
2021-09-27 来源:eefocus
概述
我们通过观察原理图可以发现LED灯有四个分别连接在GPM4_1, GPM4_2, GPM4_3 GPM4_4上面,这时候我们去查询我们板子4412的说明书,去寻址寄存器的配置


初始化的时候我们需要将他配置为输出模式,同时我们观察下面的电路可以发现,他需要输出低电平,来使led亮
#define GPM4BASE 0x11000000
#define GPM4CON 0x02E0
#define GPM4DAT 0x02E4
#define UDELAY 0x43e2647c
#define N 5000000
.text
.align 2
.global _start
_start:
mov ip, sp
push {fp, ip, lr, pc}
sub fp, ip, #4
@设置GPM4CON 使0-3引脚为输出功能
ldr r0, =GPM4BASE //将基地址放入r0
ldr r1, [r0, #GPM4CON] //ldr的伪指令用法,立即数放入r1
ldr r2, =0xffff
bic r1, r1, r2
@配置0-3引脚全部为1 0x1111 0b 0001 0001 0001 0001
ldr r2, =0x1111
orr r1, r1, r2
str r1, [r0, #GPM4CON]
@调用uboot中的延迟函数
ldr r0, =N // void udelay(x) x参数为微秒 N=5000000 为0.5秒
mov lr, pc
ldr pc, =UDELAY
loop:
@1, 将GPM4DAT 输出0x0 点亮所有灯
ldr r0, =GPM4BASE
ldrb r1, [r0, #GPM4DAT]
orr r1, r1, #0xf
bic r1, r1, #0x1
strb r1,[r0, #GPM4DAT] //由于是8位的寄存器,所以使用strb
@2 将GPM4DAT 输出0xf 熄灭所有灯
ldr r0, =GPM4BASE
ldrb r1, [r0, #GPM4DAT]
bic r1, r1, #0x3
strb r1,[r0, #GPM4DAT]
使用C与语言来点亮LED灯
布置现场,调用c语言函数,https://blog.csdn.net/dongdong7_77/article/details/108200731
可以参考我以前的这篇文章
.text
.align 2
.global _start
_start:
mov ip, sp
push {fp, ip, lr, pc}
sub fp, ip, #4
bl main
sub sp, fp, #12
ldm sp, {fp, sp, pc}
#define sdelay(x) (((void (*)(int))0x43e053d4)(x))
#define udelay(x) (((void (*)(int))0x43e2647c)(x))
typedef unsigned int u32;
typedef unsigned short u16;
typedef unsigned char u8;
void led_init(void)
{
GPM4CON &= ~0XFFFF;
GPM4CON |= 0X1111;
GPM4DAT |= 0XF;
}
void led_on(u32 num)
{
if (num >=0 && num <=3)
{
GPM4DAT &= ~(0x1 << num);
}
}
void led_off(u32 num)
{
if (num >=0 && num <=3)
{
GPM4DAT |= (0x1 << num);
}
int main(void)
{
int n = 0;
led_init();
while (1)
{
printf("led %d is on ! n", n+1);
led_on(n);
udelay(1000000);
led_off(n);
n++;
if (n > 3)
{
n = 0;
}
}
return 0;
上一篇:串行接口的工作原理和实现
下一篇:ARM汇编之APCS规则
史海拾趣
|
最近买了个mp4,国产货,质量实在令人汗然...这就令我想到一个话题,MP4产业到底路在何方? 说到MP4就会想到一个小小的集音乐、视频、游戏等娱乐功能在一身的数码播放器,MP4曾经一度被许多人认为会取代MP3,成为未来个人随身移动多媒体设备的宠儿。 ...… 查看全部问答> |
|
服务包大小:50.5M 下载地址:http://www.realview.com.cn/down-list.asp?id=611 RealView MDK 3.24下载地址:http://www.realview.com.cn/down-list.asp?id=610 使用说明:将MDK中国版例程服务包解压到MDK的安装目录下C:\\Keil\\ARM覆盖即可 B ...… 查看全部问答> |
|
读64M SD CARD ,正确读出从address39 后的512个字节!(可以读出结束标志0x55,0XAA,文件分区类型等等2 G 的SD CARD 只是读到address0后512字节(可以读出结束标志0x55,0XAA,总的扇区数,开始扇区结束扇区等)但是怎样才能读到他的FAT地址,根目 ...… 查看全部问答> |
|
---------WINCE5.0安装问题---------------- 以前在PC上安装过wince5.0(系统是win2k server),过期后卸载重新安装总是出问题。现在换了一块硬盘,重新装系统win2k server sp4,并且安装了net compactwork1.1,但是安装WINCE5.0的时候仍出问题。弹出窗口意思是如果是WIN2K系统需要SP4,如果是W ...… 查看全部问答> |
|
GPRS在IPCP协商之后的这一帧是什么帧? GPRS端:7E 80 21 01 07 00 16 03 06 00 00 00 00 81 06 00 00 00 00 83 06 00 00 00 00 66 F8 7E GGSN端:7E 80 21 03 07 00 16 0 ...… 查看全部问答> |
|
Wince 下如何注册组件---------------------------------------------------up有分 问题1,wince下注册的组件,在注册表中哪些地方有信息 问题2,regsvr32在Wince下如何用,我这边定制了一个regsvr32程序,不知如何运行,运行后就消失, 有谁知道怎么用命令行方式注册吗。 问题3,我自己在evc上有了个注 ...… 查看全部问答> |
|
关于上述各式各样的EMI信号对电子设备的影响,可用图1.3所示的单相供电系统模型来说明。其中把相线(L)与地(E)和中线(N)与地(E)之间存在的EMI信号称之为共模干扰信号,即图1.3 的电压U1和U2。对于L、N线而言,共模干扰信号可视为在L和N线 ...… 查看全部问答> |






