美文网首页
JZ2440裸机学习之从led学gpio

JZ2440裸机学习之从led学gpio

作者: 若灮 | 来源:发表于2021-06-28 09:18 被阅读0次

JZ2440学习之gpio

第一步:开发环境配置

  1. 先安装linux操作系统。
    在windows系统上安装linux子系统,或者在linux系统上安装windows虚拟机。(作者使用windowsOS,安装的ubuntu子系统,烧写工具用oflash工具)
  2. 搭建交叉编译环境。 安装arm-linux-gcc, 或者其他的编译工具。
  3. 连接Opne JTAG线到开发板和电脑。
  4. 就可以进行裸机程序烧写。

第二步:查看原理图

  1. 查看原理图,看led接线原理。 在这里插入图片描述

    因为Led一端为3.3v高电平,所有要点亮Led需要2440这边的管脚为低电平时,Led才会点亮。


    在这里插入图片描述
    由图显示,led1与GPF4相连。因此要点亮led必须让GPF4处于低电平。
  2. 让GPF4处于低电平

  • 配置GPF4功能。 输入:输出:其他
  • 设置GPF4电平。 高:低
  1. 从用户手册中查找GPF4设置功能和电平。


    在这里插入图片描述

    由图可以看出GPF4控制寄存器地址为:0x56000050, 它的第【8:9】位用来设置该引脚功能,8:9位为01时为输出功能。


    在这里插入图片描述
    由图中翻译:当端口配置为输出端口时,引脚状态与相应位相同。
    则GPF4就是第【4】位。 则: 给0x56000054的第4位置0(低电平)时,则灯亮。

第三步:编写代码

至此,原理已经分析完成,就剩写代码了。

.text
.global _start
_start:     
            LDR     R0,=0x56000050      @ R0设为GPFCON寄存器。此寄存器
                                        @ 用于选择端口B各引脚的功能:
                                        @ 是输出、是输入、还是其他
            MOV     R1,#0x00000100        
            STR     R1,[R0]             @ 设置GPF4为输出口, 位[8:7]=01
            
            LDR     R0,=0x56000054      @ R0设为GPBDAT寄存器。此寄存器
                                        @ 用于读/写端口B各引脚的数据
            MOV     R1,#0x00000000      @ 此值改为0x00000010,
                                        @ 可让LED1熄灭
            STR     R1,[R0]             @ GPF4输出0,LED1点亮
MAIN_LOOP:
            B       MAIN_LOOP

16进制0x100转为二进制为:1 0000 0000


在这里插入图片描述

几个命令解释一下:

LDR{条件}   目的寄存器     <存储器地址>

作用:将 存储器地址 所指地址处连续的4个字节(1个字)的数据传送到目的寄存器中。
MOV{条件}{S}  目的寄存器,源操作数

MOV指令可完成从另一个寄存器、被移位的寄存器或立即数赋值到目的寄存器。
其中S选项为指令的操作结果是否操作CPSR中的条件标志位,
当没有S选项时指令不更新CPSR中的条件标志位结果。
STR{条件}  源寄存器,<存储器地址>

STR指令用亍从源寄存器中将一个32位的字数据传送到存储器中。该指令在程序设计中比较常
用,丏寻址方式灵活多样,使用方式可参考指令LDR。
b

引起处理器转移到“子程序名”处开始执行,不能返回,只能跳转。

相关文章

网友评论

      本文标题:JZ2440裸机学习之从led学gpio

      本文链接:https://www.haomeiwen.com/subject/mxxqultx.html