JZ2440 学习之 gpio
因为 Led 一端为 3.3v 高电平,所有要点亮 Led 需要 2440 这边的管脚为低电平时,Led 才会点亮。
由图显示,led1 与 GPF4 相连。因此要点亮 led 必须让 GPF4 处于低电平。
2.让 GPF4 处于低电平
3.从用户手册中查找 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
引起处理器转移到“子程序名”处开始执行,不能返回,只能跳转。
页面更新:2024-05-11
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号