历史上的今天
返回首页

历史上的今天

今天是: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;

推荐阅读

史海拾趣

Chips And Technologies Inc公司的发展小趣事

在创立初期,C&T就展现出了强大的技术创新能力。公司不断推出新产品,这些产品不仅性能卓越,而且具有高度的集成性和稳定性,深受市场欢迎。此外,C&T还积极与业界合作,推动技术标准的制定和完善,为整个行业的发展做出了重要贡献。

High Voltage Semiconductor Inc公司的发展小趣事

为了更好地服务全球客户,美高测积极寻求与国际知名企业的合作。通过与半导体制造巨头台积电、英特尔等公司的合作,美高测不仅获得了先进的制造技术和市场洞察能力,还成功将其高压测试产品打入了这些巨头的供应链体系。同时,公司还与多个国家的科研机构建立了长期合作关系,共同开展前沿技术的研发和应用,进一步提升了公司的国际影响力。

DINTEK公司的发展小趣事

进入21世纪,美高测持续加大在技术研发上的投入,成功研发出具有自主知识产权的VLF(超低频)测试技术,并应用于变电站设备、中高压电力电缆等关键领域的测试。这项技术不仅提高了测试的准确性和效率,还降低了操作风险,迅速获得了市场的广泛认可。公司借此机会,在全球范围内建立了多个销售和服务中心,进一步巩固了其在高压半导体测试市场的领先地位。

Cavium Networks公司的发展小趣事

随着通信网络的不断升级和转型,Cavium Networks 看到了市场的巨大潜力。在2008年,尽管全球经济风暴肆虐,但 Cavium Networks 依然保持着强劲的增长势头。同年11月,公司宣布收购 W&W Communications 公司,这一举措进一步拓展了 Cavium Networks 的业务范围,增强了其在网络通信领域的竞争力。通过收购,Cavium Networks 获得了更多的技术资源和市场份额,为其后续的发展提供了有力的支持。

Baumer Electric Ag公司的发展小趣事

随着公司规模的不断扩大和市场竞争的加剧,Baumer Electric Ag开始实施国际化战略。1979年,公司加大了出口力度,积极开拓海外市场。1980年,堡盟在法兰克福成立了堡盟电气有限公司,进一步扩大了在欧洲市场的影响力。此后,公司陆续在全球各地设立子公司和分支机构,形成了覆盖全球的销售和服务网络。

Carlisle Interconnect Technologies公司的发展小趣事

进入21世纪,Carlisle Interconnect Technologies开始了全球化的布局。公司不仅在北美和欧洲设立了多个生产基地和研发中心,还积极开拓亚洲和拉丁美洲等新兴市场。通过全球化的战略布局,公司不仅能够更好地利用全球资源,还能够更深入地了解各地市场需求,进一步推动业务发展。同时,公司还加强了与国际知名企业的合作,共同推动电子行业的发展和进步。

这五个故事只是Carlisle Interconnect Technologies发展历程中的一部分,但它们足以展示公司在电子行业中的创新、进取和不断追求卓越的精神。这些故事也为我们揭示了一个成功企业的发展轨迹:从创业初期的创新与突破,到不断的技术升级和产品多样化,再到全球化的布局与业务拓展,每一步都充满了挑战与机遇。

问答坊 | AI 解惑

销量急剧下跌, MP4产业出路在何方

最近买了个mp4,国产货,质量实在令人汗然...这就令我想到一个话题,MP4产业到底路在何方? 说到MP4就会想到一个小小的集音乐、视频、游戏等娱乐功能在一身的数码播放器,MP4曾经一度被许多人认为会取代MP3,成为未来个人随身移动多媒体设备的宠儿。 ...…

查看全部问答>

MDK中国版例程服务包

服务包大小: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 ...…

查看全部问答>

SD CARD READ

读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 modem在拨号后到IPCP阶段的问题请教

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上有了个注 ...…

查看全部问答>

急求霍尔开关的应用电路!!!

小弟正在弄霍尔器件,望各位达人能给个电路…

查看全部问答>

EPWM问题

今天编了个PWM波形的文件,奇怪的是EPWM1B输出居然和我编写时预计的输出波形反相。 我用同样的方法编写了其他几个口出来的波形和我预计的是一样的。 难不成中头奖了。 [ 本帖最后由 安_然 于 2010-8-19 17:37 编辑 ]…

查看全部问答>

共模和差模干扰信号(续1)

关于上述各式各样的EMI信号对电子设备的影响,可用图1.3所示的单相供电系统模型来说明。其中把相线(L)与地(E)和中线(N)与地(E)之间存在的EMI信号称之为共模干扰信号,即图1.3 的电压U1和U2。对于L、N线而言,共模干扰信号可视为在L和N线 ...…

查看全部问答>