欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > Linux之ARM(MX6U)裸机篇----2.汇编LED驱动实验

Linux之ARM(MX6U)裸机篇----2.汇编LED驱动实验

2025/2/26 22:17:29 来源:https://blog.csdn.net/weixin_60444711/article/details/144726256  浏览:    关键词:Linux之ARM(MX6U)裸机篇----2.汇编LED驱动实验

一,alpha的LED灯硬件原理分析

STM32 IO初始化流程

①,使能GPIO时钟

②,设置IO复用,复用为GPIO

③,配置GPIO的电气属性推挽,上拉下拉

④,使用GPIO,输出高/低电平

MX6ULL IO初始化

①,使能时钟,CCGR0-CCGR6这7个寄存器控制着6ULL所有外设时钟的使能,为了简单,设置CCGR0-CCGR6这7个寄存器全部为0XFFFFFFF,相当于使能所有外设时钟。

②,IO复用,将寄存器IOMUXC_SW_MUX_CTL_PAD_GPIO_IO03的bit3~0设置为0101=5,这样GPIO1_IO03就复用为GPIO。

③,寄存器IOMUXC_SW_PAD_CTL_PAD_GPIO_IO03是设置GPIO1_IO03的电气属性。包括压摆率,速度,驱动能力,开漏,上下拉等。

④,配置GPIO功能,设置输入输出,设置GPIO1_DR寄存器bit3为1,也就是设置为输出模式。设置GPIO1_DR寄存器的bit3,为1表示输出高电平,为0表示输出低电平

二,汇编基础

_start:是汇编起始标志

LDR指令将地址立即数加载到寄存器Rx中,@是注释符

比如LMX6UL有个寄存器GPIO1_GDIR,其地址为0x0209C004

示例:LDR R0,=0x0209C004 @将寄存器地址0x0209C004加载到R0中

示例:LDR R1,[R0]                 @读取地址0x0209C004中的数据到R1寄存器中

上述示例将寄存器GPIO1_GDIR中的值,读取到的寄存器值保存在R1寄存器中

STR指令将一个存储器中数据写入另一个存储器Rx中

比如LMX6UL寄存器GPIO1_GDIR的值为0x20000002

示例:LDR R0,=0x0209C004 @将寄存器地址0x0209C004加载到R0中

示例:LDR R1,   =0x20000002 @R1保存要写入到寄存器的值,R1=0x20000002

示例:STR R1,   [R0]                @将R1的值写入到R0中所保存的地址中

@用汇编实现int a,b  a=b   假设a地址为0x20,b地址为0x30
LDR R0,=0X30   @读取b的值到R0中
LDR R1,[R0]    @读取R0的值到R1中
LDR R0,=0X20   @读取a的值到R0中
STR R1,[R0]    @将R1的值写到R0中

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词