arm基础IMX6ULL----点亮led

一、现在原理图上找到对应的硬件连接关系(找led连接的引脚)

--该板子由一个底板和一个最小系统板组成

--先在底板找led1找到其对应的网络标号是led0

--再根据led0这个网络标号找到在插接件的B47这(其实此时已经找到在gpio3那了)

--再去核心板上查找得到GPIO1_IO3

二、由于引脚数量有限,所以多个控制器共用一个引脚(点灯使用gpio来控制)

--使用一个选通门(用MUXIO_SW来控制这个选通门)选择引脚功能

--使用PAD_SW控制电气特性

--配置引脚方向

--输出高低电平

三、根据手册配置功能

1、gpio内部图

--此次只用配置两个寄存器dir/dr 方向和数据

1、GPIO1_DR 第三位置0(低电平)或置1 (高电平)

2、GPIO1_DIR 第三位置1,引脚方向为输出

2、在MUX中配置MUX_MODE

--将其配置成GPIO_IO3 mode值为0101

3、在IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03中低四位配置成0x10b0,GPIO1_IO03

引脚使用默认的电气属性

四、汇编

cpp 复制代码
.global _start

_start:
    ldr pc, =_reset_handler
    ldr pc, =_software_handler
    ldr pc, =_undef_handler
    ldr pc, =_prefetch_abort_handler
    ldr pc, =_data_abort_handler
    nop
    ldr pc, =_irq_handler
    ldr pc, =_fiq_handler

_software_handler:
    b _software_handler

_undef_handler:
    b _undef_handler

_prefetch_abort_handler:
    b _prefetch_abort_handler

_data_abort_handler:
    b _data_abort_handler

_irq_handler:
    b _irq_handler

_fiq_handler:
    b _fiq_handler

_reset_handler:
    /*DDR    0x80000000 ~ 0xA0000000*/
    cpsid i             /*disable irq*/
    ldr sp, =0x81000000 /*init system mode  stack  16M   */
    cps #0x12           /*change to irq mode */
    /* 
    mrs r0, cpsr
    bic r0, r0, #0x1f
    orr r0, r0, #0x12
    msr cpsr_c, r0
    */
    ldr sp, =0x82000000 /*init irq mode stack  16M */

    cps #0x1f           /* change to system mode */
    /* 
    mrs r0, cpsr
    orr r0, r0, #0x1f
    msr cpsr_c, r0
    */

    cpsie i     /* enable  irq */

    bl led_init
led:
    bl led_on
    bl led_delay
    bl led_off
    bl led_delay
    b led

code_end:
    b code_end

led_init:
    ldr r0, =0x20e0068
    ldr r1, [r0]
    bic r1, r1, #0x1f
    orr r1, r1, #0x05
    str r1, [r0]

    ldr r0, =0x20e02f4
    ldr r1, [r0]        /*unuse*/
    ldr r1, =0x10b0
    str r1, [r0]

    ldr r0, =0x209c004
    ldr r1, [r0]
    orr r1, r1, #(1 << 3)
    str r1, [r0]

    ldr r0, =0x209c000
    ldr r1, [r0]
    orr r1, r1, #(1 << 3)
    str r1, [r0]
    bx lr

led_on:
    ldr r0, =0x209c000
    ldr r1, [r0]
    bic r1, r1, #(1 << 3)
    str r1, [r0]
    bx lr

led_off:
    ldr r0, =0x209c000
    ldr r1, [r0]
    orr r1, r1, #(1 << 3)
    str r1, [r0]
    bx lr

led_delay:
    ldr r0, =0x80000

loop_delay:
    sub r0, r0, #1
    cmp r0, #0
    bge loop_delay
    bx lr

五、编译并下载

相关推荐
珞光电子USRP SDR软件无线电平台2 天前
国产嵌入式SDR平台LW-E320-G详解:射频、FPGA、ARM架构与应用选型
arm开发·fpga开发·架构
Jason_zhao_MR2 天前
Linux与采集MCU通信为什么我们用了双SPI
linux·arm开发·单片机·嵌入式硬件·嵌入式
ARM|X86+FPGA工业主板厂家3 天前
基于嵌入式 GPU 的智能服务机器人
linux·运维·arm开发·fpga开发·机器人
一池秋_3 天前
arm低配linux设备,桌面应用冷启动提速方法
linux·运维·arm开发
qq_402995754 天前
诊断协议栈配置Agent
arm开发·人工智能·stm32·单片机·mcu
一木 之林6 天前
三.C++ 内存管理(进阶)(二)
开发语言·arm开发·c++
hongmai6668887 天前
MP2348GTL-Z:这颗24V/4A同步降压芯片,把性能和体积平衡得恰到好处
c语言·开发语言·arm开发·单片机·5g
隔窗听雨眠8 天前
ARM架构下Logstash与Elasticsearch集群部署完全指南:从环境适配到生产验证
arm开发·elasticsearch·架构
郭老师-嵌入式8 天前
arm linux 移植 udhcp 与 使用
linux·服务器·arm开发
深念Y9 天前
登录日志与管理员审计日志存储决策
前端·arm开发·后端·微服务·云原生·架构