I.MX6ULL的IO分为SNVS域值和通用的。
点亮led的GPIO需要以下设置:
①、使能 GPIO 对应的时钟。
②、设置寄存器 IOMUXC_SW_MUX_CTL_PAD_XX_XX,设置 IO 的复用功能,使其复用
为 GPIO 功能。
③、设置寄存器 IOMUXC_SW_PAD_CTL_PAD_XX_XX,设置 IO 的上下拉、速度等等。
④、第②步已经将 IO 复用为了 GPIO 功能,所以需要配置 GPIO,设置输入/输出、是否使
用中断、默认输出电平等。
1.首先是定义全局标号_start,代码是从这开始续写。
2.像stm32一样使能时钟,首先是查询手册查找每一个CCGR的地址并将其进行置1,为点亮led,使GPIO进行复用。查询手册寻找SW_MUX_GPIO_IO103_BASE的地址,并且查看手册MUX_MODE将其设置为GPIO的输出。

会是ALT5模式置0101来调为GPIO输出,GPIO1_IO00有两个书签:
1 2
| IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO00 IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO00
|
3.查询IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03的地址根据手册配置电气属性。
4.之后配置GPIO为输出模式
5.GPIO1_IO03 已经配置好了,只需要向 GPIO1_DR 寄存器的 bit3 写入 0 即可控制 GPIO1_IO03 输出低电平,打开 LED,向 bit3 写入 1 可控制 GPIO1_IO03 输出高电平,关闭 LED。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| 1 2 .global _start /* 全局标号 */ 3 4 /* 5 * 描述: _start 函数,程序从此函数开始执行此函数完成时钟使能、 6 * GPIO 初始化、最终控制 GPIO 输出低电平来点亮 LED 灯。 7 */ 8 _start: 9 /* 例程代码 */ 10 /* 1、使能所有时钟 */ 11 ldr r0, =0X020C4068 /* 寄存器 CCGR0 */ 12 ldr r1, =0XFFFFFFFF 13 str r1, [r0] 14 15 ldr r0, =0X020C406C /* 寄存器 CCGR1 */ 16 str r1, [r0] 17 18 ldr r0, =0X020C4070 /* 寄存器 CCGR2 */ 19 str r1, [r0] 20 21 ldr r0, =0X020C4074 /* 寄存器 CCGR3 */ 22 str r1, [r0] 23 24 ldr r0, =0X020C4078 /* 寄存器 CCGR4 */ 25 str r1, [r0] 26 27 ldr r0, =0X020C407C /* 寄存器 CCGR5 */ 28 str r1, [r0] 29 30 ldr r0, =0X020C4080 /* 寄存器 CCGR6 */ 31 str r1, [r0] 32 33 34 /* 2、设置 GPIO1_IO03 复用为 GPIO1_IO03 */ 35 ldr r0, =0X020E0068 /* 将寄存器 SW_MUX_GPIO1_IO03_BASE 加载到 r0 中 */ 36 ldr r1, =0X5 /* 设置寄存器 SW_MUX_GPIO1_IO03_BASE 的 MUX_MODE 为 5 */ 37 str r1,[r0] 38 39 /* 3、配置 GPIO1_IO03 的 IO 属性 40 *bit 16:0 HYS 关闭 41 *bit [15:14]: 00 默认下拉 42 *bit [13]: 0 kepper 功能 43 *bit [12]: 1 pull/keeper 使能 44 *bit [11]: 0 关闭开路输出 45 *bit [7:6]: 10 速度 100Mhz 46 *bit [5:3]: 110 R0/6 驱动能力 47 *bit [0]: 0 低转换率 48 */ 49 ldr r0, =0X020E02F4 /*寄存器 SW_PAD_GPIO1_IO03_BASE */ 50 ldr r1, =0X10B0 /*把IO属性按照位来转换成16进制之后置位*/ 51 str r1,[r0] 52 53 /* 4、设置 GPIO1_IO03 为输出 */ 54 ldr r0, =0X0209C004 /*寄存器 GPIO1_GDIR */ 55 ldr r1, =0X0000008 56 str r1,[r0] 57 58 /* 5、打开 LED0 59 * 设置 GPIO1_IO03 输出低电平 60 */ 61 ldr r0, =0X0209C000 /*寄存器 GPIO1_DR */ 62 ldr r1, =0 63 str r1,[r0] 64 65 /* 66 * 描述: loop 死循环 67 */ 68 loop: 69 b loop
|