linux学习笔记5

本文详细介绍了STM32和IMX6ULL微控制器的GPIO初始化流程,涉及时钟使能、IO复用、电气属性配置等步骤。同时,讲解了ARM汇编语言的基础,包括GNU汇编语法、数据传输指令如MOV、MRS和MSR,以及存储器访问指令LDR和STR。此外,还阐述了压栈、出栈和跳转指令在函数调用中的应用,特别是BL指令在子程序调用中的重要作用。
摘要由CSDN通过智能技术生成

汇编LED驱动

--------------------------

1、原理分析

STM32 IO初始化流程

  1. 使能GPIO时钟。
  2. 设置IO复用,将其复用为GPIO
  3. 配置GPIO的电气属性。
  4. 使用GPIO,输出高/低电平。

IMX6ULL IO 初始化:

  1. 使能时钟,CCGR0~CCGR6这七个寄存器控制着6LULL所有外设的使能,为了简单,设置CCGR0~CCGR6这7个寄存器全部为0XFFFFFFFF,相当于使能是由外设时钟。
  2. IO复用,将寄存器IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03的bit3~0设置为0101=5,这样GPIO_IO03就复用为GPIO。
  3. 寄存器IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03是设置GPIO1_IO03的电气属性。包括压摆率、速度、驱动能力、开漏、上下拉等。
  4. 配置GPIO功能,设置输入输出。设置GPIO1_GDIR等寄存器bit3为一。也就是设置为输出模式,设置GPIO1_IO03寄存器的bit3,为1为输出高电平,为0表示输出低电平。

汇编简介:

1.汇编语法:
       如果大家使用过 STM32 的话就会知道 MDK 和 IAR 下的启动文件startup_ stm32f1 0x_ h d.s其中的汇编语法是有所不同的,将 MDK 下的汇编文件直接复制到 IAR 下去编译就会出错,因
为 MDK 和 IAR 的编译器不同,因此对于汇编的语法就有一些小区别。我们要编写的是 ARM
汇编,编译使用的 GCC 交叉编译器,所以我们的汇编代码要符合 GNU 语法。
        GNU 汇编语法适用于所有的架构,并不是 ARM 独享的, GNU 汇编由一系列的语句组成,
每行一条语句,每条语句有三个可选部分,如下:
label: instruction @ comment
        label 即标号,表示地址位置,有些指令前面可能会有标号,这样就可以通过这个标号得到
指令的地址,标号也可以用来表示数据地址。注意 label 后面的冒号“:”,任何以冒号“:”结
尾的标识符都会被认识是一个标号。
        instruction 即指令,也就是汇编指令或伪指令。
        @符号,表示后面的是注释,就跟 C 语言里面的“/*”和“*/”一样,其实在 GNU 汇编文
件中我们也可以使用“/*”和“*/”来注释。
        comment 就是注释内容。
        比如如下代码:
add:
MOVS R0,#OX12 @

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值