历史上的今天
返回首页

历史上的今天

今天是:2024年11月01日(星期五)

正在发生

2021年11月01日 | Linux之ARM(IMX6U)裸机汇编LED驱动实验--驱动编写

2021-11-01 来源:eefocus

1. I.MX6ULL的初始化

①、使能时钟

使能时钟。CCGR0–CCGR6这七个寄存器控制着I.MX6ULL所有外设时钟的使能,为了简单,设置CCGR0–CCGR6这七个寄存器全部为0xFFFFFFFF,相当于使能所有的外设时钟


CCGR0:

在这里插入图片描述

CCGR1:

在这里插入图片描述

CCGR2:

在这里插入图片描述

CCGR3:

在这里插入图片描述

CCGR4:

在这里插入图片描述

CCGR5:

在这里插入图片描述

CCGR6:

在这里插入图片描述

汇编使能所有的外设时钟:

在这里插入图片描述

②、配置 GPIO_I003 PIN的复用为GPIO

将IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03的bit3-0,设置为0101,这样GPIO_IO03就复用为GPIO

在这里插入图片描述

汇编实现:

在这里插入图片描述

③、配置 IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03的电器属性

设置寄存器 IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03的电器属性,包括摆率,速度,驱动能力,开漏,上下拉等等

在这里插入图片描述

在这里插入图片描述

汇编代码实现:

在这里插入图片描述

④、配置GPIO功能,设置输入输出

设置GPIO1_GDIR寄存器bit3为1,也就是设置为输出模式

在这里插入图片描述
在这里插入图片描述

汇编实现:

在这里插入图片描述

⑤、设置GPIO_DR寄存器的bit3,1表示输出高电平,0表示输出低电平

在这里插入图片描述
在这里插入图片描述

汇编实现:

在这里插入图片描述

整个汇编代码(.s文件):


.global _start @全局标号


_start:

    /*使能所有外设时钟 */

    LDR R0 , =0x020c4068  @CCGR0 

    LDR R1 , =0xffffffff  @要想CCGR0写入的数据

    STR R1 , [R0]         @将R1的值写入到R0中

    

    LDR R0 , =0x020c406c  @CCGR1

    STR R1 ,[R0]


    LDR R0 , =0x020c4070  @CCGR1

    STR R1 ,[R0]


    LDR R0 , =0x020c4074  @CCGR1

    STR R1 ,[R0]


    LDR R0 , =0x020c4078  @CCGR1

    STR R1 ,[R0]


    LDR R0 , =0x020c407c  @CCGR1

    STR R1 ,[R0]


    LDR R0 , =0x020c4080  @CCGR1

    STR R1 ,[R0]


    /*配置 GPIO_I003  PIN的复用为GPIO

    * IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03 = 0101 =5

    * IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03寄存器的地址为0x020E_0068

    */

    LDR R0 , =0x020E0068  @IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03

    LDR R1 , =0x5          @要写入的数据

    STR R1 , [R0]          @将5写入IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03


    /*配置 IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03的电器属性

    * IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03的地址时0x020E_02F4

    * bit0 :    0 低速率

    * bit5-3:   110 R0/6  驱动能力

    * bit7-6:   10 100MHz速度

    * bit11:    0 关闭开路输出

    * bit12:    1 使能pull/keeper

    * bit15-14: 00 100K下拉

    * bit16:    0 关闭hys    

    * 向寄存器IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03写入 0x10b0

    */


    LDR R0 , = 0x020E02F4

    LDR R1 , = 0x10b0

    STR R1 ,[R0]


    /*设置GPIO功能

     *设置GPIO1_GDIR寄存器  设置GPIO1_GPIO03为输出

     *寄存器GPIO_GDIR的地址是  0x0209C004

     * 设置GPIO1_GDIR寄存器bit3为1也就是GPIO1_GPIO03为输出

     */

    LDR R0 , = 0x0209C004

    LDR R1 , = 0x8

    STR R1 ,[R0]


    /*打开LED,也就是设置GPIO1_GPIO03为0 

     *GPIO1_DR 寄存器地址为0x0209C000

    */


    LDR R0 , = 0x0209C000

    LDR R1 , =0

    STR R1 ,[R0]


loop:

    b loop


推荐阅读

史海拾趣

Ecera Comtek Corp公司的发展小趣事

面对日新月异的电子科技行业,Ecera Comtek Corp公司深知只有持续创新才能保持领先地位。因此,公司不断加大对新技术、新产品的研发投入,积极探索新的商业模式和市场机会。同时,Ecera Comtek Corp公司还积极引进外部创新资源,与高校、科研机构等建立紧密的合作关系,共同推动电子科技行业的发展。在Ecera Comtek Corp公司的引领下,电子科技行业正朝着更加智能、高效、环保的方向发展。

请注意,以上故事均基于虚构情节,旨在模拟Ecera Comtek Corp公司可能的发展经历。如有雷同,纯属巧合。

Epistar Corp公司的发展小趣事

随着LED技术的不断发展,Epistar开始将目光投向国际市场。公司积极参与各类国际展会和论坛,展示其先进的LED产品和技术实力。同时,Epistar还加强了与国际知名企业的合作,共同开发新产品,拓宽销售渠道。这些努力使Epistar的品牌知名度和市场份额不断提升,公司逐渐在国际LED市场上崭露头角。

Catalyst公司的发展小趣事

为了进一步扩大市场份额,Catalyst公司积极实施国际化战略。公司通过与国外知名企业的合作与交流,引进先进的技术和管理经验,不断提升自身的竞争力。同时,Catalyst还积极参加国际电子展会和论坛,展示公司的最新产品和技术成果,吸引了众多国际客户的关注。通过国际化战略的拓展,Catalyst成功打开了海外市场的大门,为公司的长远发展奠定了坚实的基础。

FEIG ELECTRONIC公司的发展小趣事

Digi-Key作为全球知名的电子元器件分销商,与FEIG ELECTRONIC建立了长期稳定的合作关系。通过这一合作,Digi-Key为FEIG提供了全球范围内的分销服务,将FEIG的产品推向了更广阔的市场。同时,Digi-Key还为FEIG的产品提供了专业的技术支持和售后服务,进一步巩固了FEIG在RFID领域的领先地位。

BETA Transformer Technology Corp公司的发展小趣事

为了进一步扩大市场份额,BETA Transformer Technology Corp公司开始实施国际化战略。公司积极参加国际电子展览,与国际同行进行深入交流与合作。同时,BETA公司还在海外设立了研发中心和生产基地,以便更好地服务全球客户。通过不断拓展国际市场,BETA公司的品牌影响力和市场竞争力得到了显著提升。

EMBEST公司的发展小趣事

随着国内市场的逐步稳固,EMBEST开始寻求更广阔的发展空间。XXXX年,EMBEST的开发工具成功进入国际市场,并获得了多家芯片公司的认可,成为他们的第三方工具伙伴。这一举措不仅提升了EMBEST的品牌影响力,也为其带来了更多的商业机会。EMBEST凭借过硬的技术实力和优质的服务,逐渐在国际市场上崭露头角。

问答坊 | AI 解惑

西部安防展/美国安防展/2009美国安防展/安防展/ISC安防展/美国安防展

2009美国西部国际安防产品博览会(ISC) 【展会时间】  2009年4月1日-3日 【展会地点】  美国拉斯维加斯展览中心 【展品范围】 闭路电视、监视器、门路控制、家庭保险设备、摄像设备、安保五金、电池、对讲机、各类锁具、保 ...…

查看全部问答>

什么是morror driver?和wmd驱动有什么区别?

什么是morror driver?和wdm驱动有什么区别?…

查看全部问答>

【求助】keilc编程 奇怪问题

在我的程序里有一个数组 unsigned int y[25]={0,1,2,3,6,5,4,0,1,2,3,6,5,4,0,0,1,0,0,1,0,1,0,1,0}; 把他定义在函数外面编译通过 并且和硬件调试好用。 把他定义在函数里面编译通过 可是和硬件调试不好用。 这会是什么原因,是不是分配的空间乱 ...…

查看全部问答>

TI下的CC2520参考设计的PCB怎么打开?

TI下的CC2520参考设计的PCB怎么打开?不知用的什么软件,一直打不开。只能用CAM350看。…

查看全部问答>

推荐一本手把手教你嵌入式的书

嵌入式操作系统原理与面向任务程序设计:基于uC/OS-II v2.86和ARM920T/张勇编著。西安电子科技大学出版社的  很好…

查看全部问答>

怎么利用F155实现计数功能

请教:将一个矩形脉冲序列送入单片机计算其脉冲数并根据脉冲数调节其增益。怎么实现呢?主要是计算脉冲数。谢谢…

查看全部问答>

28035 DSP开发板实验例程和手册全套发布(例程部分之一)

 TMS320F28035是TI新推出的Piccolo系列DSP之一,它具有很高的性价比和出色的DSP控制性能。对于入门来说,它比2812更适合:单电源供电,主频适中(60MHZ),附带一个浮点运算核,价格也没有2812那样有时贵得离谱。同样具有增强型eCAN、SPI,SCI等 ...…

查看全部问答>

32位通用微控制器加快节能产品上市时间

在瞬息万变的市场环境中,率先将产品投放市场是在商战中取胜的关键,因此,产品开发的速度年年加快。为将产品及时推向市场,提高作为系统核心的微控制器的开发效率需求更是逐年高涨。鉴于对更高开发效率的强劲需求,富士通半导体采用全球通用化标 ...…

查看全部问答>