参考资料:IMAX6ULL参考手册
1.使能时钟
参考手册中,Chapter 18: Clock Controller Module (CCM),CCM_CCGRx(0~6)寄存器负责所有的外设时钟
CCGR0的地址为:Address: 20C_4000h base + 68h offset = 20C_4068h,往后寄存器依次便宜4个字节
打开所有的外设时钟
@开启时钟 18章 CCGR0-CCGR6 32位的寄存器
@CCGR0 地址 20C_4068h
ldr r0,=0x20c4068
ldr r1,=0xFFFFFFFF
str r1,[r0]
ldr r0,=0x20c406C @CCGR1
ldr r1,=0xFFFFFFFF
str r1,[r0]
ldr r0,=0x20c4070 @CCGR2
ldr r1,=0xFFFFFFFF
str r1,[r0]
ldr r0,=0x20c4074 @CCGR3
ldr r1,=0xFFFFFFFF
str r1,[r0]
ldr r0,=0x20c4078 @CCGR4
ldr r1,=0xFFFFFFFF
str r1,[r0]
ldr r0,=0x20c407c @CCGR5
ldr r1,=0xFFFFFFFF
str r1,[r0]
ldr r0,=0x20c4080 @CCGR6
ldr r1,=0xFFFFFFFF
str r1,[r0]
@配置引脚复用为GPIO功能 IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03
@31-5保留,4->0 0-3 --> 0101 gpio1
ldr r0,=0x20e0068
ldr r1,=0x5
str r1,[r0]
2.IO复用,把GPIO1_IO03引脚 复用为GPIO
参考手册中,第32章,Chapter 32: IOMUX Controller (IOMUXC),IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03的bit3~bit0设置为0101即为GPIO
寄存器的地址为:Address: 20E_0000h base + 68h offset = 20E_0068h
@配置引脚复用为GPIO功能 IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03
@31-5保留,4->0 0-3 --> 0101 gpio1
ldr r0,=0x20e0068
ldr r1,=0x5
str r1,[r0]
3.配置GPIO1_IO03引脚电器属性(上下拉,驱动能力)
参考手册中,第32章,IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03的bit3~bit0设置为0101即为GPIO
寄存器的地址为:Address: 20E_0000h base + 2F4h offset = 20E_02F4h
bit0:压摆率 ----0----低速率
bit2~1:保留
bit5~3:驱动能力,数值越大,驱动能力越强----110----R0/6
bit7~6:速度----10----100MHz速度
bit10~8:保留
bit11:开漏输出----0----关闭开漏输出
bit12:Pull/Keeper使能----1----Pull/Keeper Enable
bit13:Pull/Keeper-----0-----keeperld
bit15~14:选择电阻----00----100k下拉
bit16:HYS----0----关闭
bit31~17:保留
设置最终值为:0x10B0
ldr r0,=0x0X20E02F4
ldr r0,=0x10B0
str r1,[r0]
4.配置GPIO功能(GPIOx_GDIR)
参考手册中,第28章,Chapter 28: General Purpose Input/Output (GPIO)中的GDIR寄存器-->输入还是输出
GPIO Memory Map/Register Definitio n中显示GPIO1_GDIR地址为0x0209c004
GPIO1_GDIR每一位代表一个IO,设置bit3为1,就是设置GPIO1_IO03为输出
ldr r0,=0x0X209c004
ldr r0,=0x8
str r1,[r0]
5.设置GPIO输出高低电平(GPIOx_DR)
GPIOx_DR地址为:Address: Base address + 0h offset=0x0209c0000
GPIOx_DR每一个bit代表一个IO
ldr r0,=0x209c000
ldr r1,=0x0
str r1,[r0]
最后:接一个死循环,防止CPU跑飞
loop:
b loop