Linux操作系统-LED点灯汇编代码实现

一、使能时钟

        CCGR0-CCGR6这7个寄存器全部写为0xFFFFFFFF。

         上图为CCGR0的寄存器地址向其写入oxFFFFFFFF代码如下所示:

    ldr r0,=0x020c4068 @CCGR0的寄存器地址
    ldr r1,=0xffffffff @向CCGR0中写入的数据
    str r1,[r0]        @将r1中的数据写入r0中 

        然后将后面六个都赋值为0xffffffff。

    ldr r0,=0x020c406c @CCGR1的寄存器地址
    ldr r1,=0xffffffff @向CCGR1中写入的数据

    str r1,[r0]        @将r1中的数据写入r0中     

    ldr r0,=0x020c4070 @CCGR2的寄存器地址
    ldr r1,=0xffffffff @向CCGR2中写入的数据

    str r1,[r0]        @将r1中的数据写入r0中  

   ldr r0,=0x020c4074 @CCGR3的寄存器地址
    ldr r1,=0xffffffff @向CCGR2中写入的数据

    str r1,[r0]        @将r1中的数据写入r0中  

    ldr r0,=0x020c4078 @CCGR4的寄存器地址
    ldr r1,=0xffffffff @向CCGR2中写入的数据

    str r1,[r0]        @将r1中的数据写入r0中 

    ldr r0,=0x020c407c @CCGR5的寄存器地址
    ldr r1,=0xffffffff @向CCGR2中写入的数据

    str r1,[r0]        @将r1中的数据写入r0中  

    ldr r0,=0x020c4080 @CCGR5的寄存器地址
    ldr r1,=0xffffffff @向CCGR2中写入的数据

    str r1,[r0]        @将r1中的数据写入r0中  

二、IO复用

        配置IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03寄存器其地址为0x020e0068c设置其值为5代码如下所示。

    ldr r0,=0x020e0068 @OMUXC_SW_MUX_CTL_PAD_GPIO1_IO00寄存器的地址
    ldr r1,=0X5        @需要写入的数值

    str r1,[r0]        @将5写入到MUXC_SW_MUX_CTL_PAD_GPIO1_IO00中

  三、配置其电器属性

        配置IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03寄存器其地址为0x020e02f4向其写入0x10b0,配置步骤与代码如下:

    ldr r0,=0x020e02f4 @IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03寄存器地址
    ldr r1,=0x10b0     @需要写入的数据

    str r1,[r0]

 四、配置GPIO属性

        设置 GPIO1_GDIR,设置GPIO1_GPIO03为输出模式,其寄存器地址为0x0209c004

    ldr r0,=0x0209c004 @GPIO1_GDIR寄存器的地址
    ldr r1,=0x8        @需要写入的数值

    str r1,[r0]

 五、设置电平

        设置GPIO1_GPIO03输出低电平,需要配置GPIO1_DR寄存器,其地址为0x0209c000.

      @设置GPIO1_GPIO03输出低电平
    ldr r0,=0x0209c000 @GPIO1_DR寄存器的地址
    ldr r1,=0x0        @需要写入的数据

    str r1,[r0]        

五、完整代码

.global  _start    @全局标号


_start:
    @使能所有时钟
    
    ldr r0,=0x020c4068 @CCGR0的寄存器地址
    ldr r1,=0xffffffff @向CCGR0中写入的数据

    str r1,[r0]        @将r1中的数据写入r0中     

    ldr r0,=0x020c406c @CCGR1的寄存器地址
    ldr r1,=0xffffffff @向CCGR1中写入的数据

    str r1,[r0]        @将r1中的数据写入r0中     

    ldr r0,=0x020c4070 @CCGR2的寄存器地址
    ldr r1,=0xffffffff @向CCGR2中写入的数据

    str r1,[r0]        @将r1中的数据写入r0中  

   ldr r0,=0x020c4074 @CCGR3的寄存器地址
    ldr r1,=0xffffffff @向CCGR2中写入的数据

    str r1,[r0]        @将r1中的数据写入r0中  

    ldr r0,=0x020c4078 @CCGR4的寄存器地址
    ldr r1,=0xffffffff @向CCGR2中写入的数据

    str r1,[r0]        @将r1中的数据写入r0中 

    ldr r0,=0x020c407c @CCGR5的寄存器地址
    ldr r1,=0xffffffff @向CCGR2中写入的数据

    str r1,[r0]        @将r1中的数据写入r0中  

    ldr r0,=0x020c4080 @CCGR5的寄存器地址
    ldr r1,=0xffffffff @向CCGR2中写入的数据

    str r1,[r0]        @将r1中的数据写入r0中  

    @配置其IO复用功能

    ldr r0,=0x020e0068 @OMUXC_SW_MUX_CTL_PAD_GPIO1_IO00寄存器的地址
    ldr r1,=0X5        @需要写入的数值

    str r1,[r0]        @将5写入到MUXC_SW_MUX_CTL_PAD_GPIO1_IO00中
  
    @配置GPIO_IO03的电气属性其寄存器地址为IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03 0x020e02f4
    ldr r0,=0x020e02f4 @IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03寄存器地址
    ldr r1,=0x10b0     @需要写入的数据

    str r1,[r0]

    @设置GPIO功能 设置GPIO1_GDIR寄存器bit3为1
    ldr r0,=0x0209c004 @GPIO1_GDIR寄存器的地址
    ldr r1,=0x8        @需要写入的数值

    str r1,[r0]

    @设置GPIO1_GPIO03输出低电平
    ldr r0,=0x0209c000 @GPIO1_DR寄存器的地址
    ldr r1,=0x0        @需要写入的数据

    str r1,[r0]        

    loop:
        b loop
  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值