100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 一 100ASK_IMX6ULL嵌入式裸板学习_LED实验(上)

一 100ASK_IMX6ULL嵌入式裸板学习_LED实验(上)

时间:2024-05-29 02:11:38

相关推荐

一 100ASK_IMX6ULL嵌入式裸板学习_LED实验(上)

LED实验

汇编的方式驱动LED

/**LED汇编实验*创建者:Orange*03月04日*/.global _start @全局标号_start:/*使能所有外设时钟 */ldr r0, =0x020c4068 @CCGR0的地址ldr r1, =0xffffffff @要向CCGR0写入的数据str r1, [r0] @将0xffffffff写入到CCGR0中ldr r0, =0x020c406c @CCGR1的地址str r1, [r0]ldr r0, =0x020c4070 @CCGR2的地址str r1, [r0]ldr r0, =0x020c4074 @CCGR3的地址str r1, [r0]ldr r0, =0x020c4078 @CCGR4的地址str r1, [r0]ldr r0, =0x020c407c @CCGR5的地址str r1, [r0]ldr r0, =0x020c4080 @CCGR6的地址str r1, [r0]/*配置GPIO5_IO3的PIN复用为GPIO,也就是*设置IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3 = 3*IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3寄存器地址为0x02290014*/ldr r0, =0x02290014@IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3的地址ldr r1, =3 @关闭该口的软件输入功能,复用为GPIO,则应赋值0x1010,即3str r1, [r0] @将0x00101写入IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3寄存器中/*配置SNVS_TAMPER3的电气属性 也就是寄存器:*IOMUXC_SNVS_SW_PAD_CTL_PAD_SNVS_TAMPER3*IOMUXC_SNVS_SW_PAD_CTL_PAD_SNVS_TAMPER3寄存器地址为0x02290058**bit0:0 为低速率 压摆率设置*bit5:3 110 R0/6的驱动能力 设置驱动能力(Drive Strength Field)*bit7:6 10 medium(100MHz) 设置速度*bit110 关闭开漏使能设置开漏使能*bit121 使能Pull/Keeper *bit130 选择Keeper选择Pull还是Keeper*bit15:14 00 100K的下拉电阻 设置上/下拉电阻的大小*bit160 关闭HYS使能设置HYS磁滞使能 *综上该寄存器的值应设置为0x10b0*/ldr r0, =0x02290058 @IOMUXC_SNVS_SW_PAD_CTL_PAD_SNVS_TAMPER3的地址ldr r1, =0x10b0str r1, [r0] @将r1中的值/*设置GPIO 设置是输入还是输出 *GPIO5_GDIR寄存器地址为0x020ac004*设置GPIO5_GDIR寄存器的bit3为1*也就是设置GPIO5_IO03为输出*/ldr r0, =0x0209c004ldr r1, =0x8str r1, [r0]/*打开LED,也就是设置GPIO5_GPIO03为0*具体要结合开发板原理图上LED的连接方式来操作*由于此处LED另一端连接的是电源,所以设置为0为点亮* */ldr r0, =0x02090000ldr r1, =1str r1, [r0]loop :b loop

汇编驱动LED小结(代码分析):

全局标号使能所有外设时钟(或在芯片手册中)

ldr r1, =0xffffffff ldr r0, =CCGR(时钟控制寄存器)的地址str r1, [r0]

配置对应的复用IO口为GPIO

/*配置GPIO5_IO3的PIN复用为GPIO,也就是*设置IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3 = 3*IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3寄存器地址为0x02290014*//*配置GPIO5_IO3的PIN复用为GPIO,也就是*设置IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3 = 3*IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3寄存器地址为0x02290014*/ldr r0, =0x02290014@IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3的地址ldr r1, =3 @关闭该口的软件输入功能,复用为GPIO,则应赋值0x1010,即3str r1, [r0] @将0x00101写入IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3寄存器中

配置此GPIO口的电气属性,比如压摆率、驱动能力、是否开漏、上下拉电阻的大小、是否使能PULL/Keeper、是否打开HYS磁滞使能等等

/*配置SNVS_TAMPER3的电气属性 也就是寄存器:*IOMUXC_SNVS_SW_PAD_CTL_PAD_SNVS_TAMPER3*IOMUXC_SNVS_SW_PAD_CTL_PAD_SNVS_TAMPER3寄存器地址为0x02290058**bit0:0 为低速率 压摆率设置*bit5:3 110 R0/6的驱动能力 设置驱动能力(Drive Strength Field)*bit7:6 10 medium(100MHz) 设置速度*bit110 关闭开漏使能设置开漏使能*bit121 使能Pull/Keeper *bit130 选择Keeper选择Pull还是Keeper*bit15:14 00 100K的下拉电阻 设置上/下拉电阻的大小*bit160 关闭HYS使能设置HYS磁滞使能 *综上该寄存器的值应设置为0x10b0*/ldr r0, =0x02290058 @IOMUXC_SNVS_SW_PAD_CTL_PAD_SNVS_TAMPER3的地址ldr r1, =0x10b0str r1, [r0] @将r1中的值

设置GPIO是输入还是输出

/*设置GPIO 设置是输入还是输出 *GPIO5_GDIR寄存器地址为0x020ac004*设置GPIO5_GDIR寄存器的bit3为1*也就是设置GPIO5_IO03为输出*/ldr r0, =0x0209c004ldr r1, =0x8str r1, [r0]

设置完后便可以对GPIO操作,设置0或1,控制GPIO的动作

/*打开LED,也就是设置GPIO5_GPIO03为0*具体要结合开发板原理图上LED的连接方式来操作*由于此处LED另一端连接的是电源,所以设置为0为点亮* */ldr r0, =0x02090000ldr r1, =1str r1, [r0]

最后设置一个循环,使程序持续进行

loop :

b loop

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。