迅为龙芯2K1000开发板通过汇编控制GPIO
最佳答案 问答题库558位专家为你答疑解惑
上一小节,我们使用了 C 语言控制了 gpio,这一小节我们来看一下如何使用汇编来控制 gpio 呢?有的
同学可能会有疑问了,既然我们可以使用 C 语言来控制 gpio,为什么我们还要使用更底层的汇编语言呢,
如果我们要使用 C 语言,是不是需要等待 C 语言环境建立起来才可以使用呢,那他是不是就要比汇编稍微
的慢一些呢,如果我们想让他上电立马就确定 gpio 管脚的电平的状态,使用汇编会更好些。
我们打开 Targets/LS2K/ls2k/start.S 下的 start.S 文件,我们在 9.4.2 小节里面已经确定了他的位置,这里
就不在赘述了。
然后我们在第 487 行输入以下代码,同样,这里还是用 gpio0 给大家举例
/*
*设置使用 GPIO 的方向为输出
*/
li v0, 0xbfe10500
ld v1, (v0)
dli a0, (1<<0)
//gpio0
or v1, a0
xor v1, a0
sd v1, (v0)
/*
*找到 GPIO 输出数据寄存器
*/
//0x10(v0)这种写法就是给 v0 地址偏移 0x10,v0 地址是 0xbfe10500,偏移 0x10 就是 0xbfe10510,即
输出数据寄存器
ld v1, 0x10(v0)
/*
*给数据寄存器写 1 输出高电平
*/
or v1, a0
sd v1, 0x10(v0) //on
/*
*延迟
*/
dli a2,0xffff
//delay
1:
subu a2, 0x1
nop
bgtz a2, 1b
/*
*给数据寄存器写 0 输出低电平
*/
or v1, a0
xor v1, a0
//off
sd v1, 0x10(v0)
/*
*延迟
*/
dli a2,0xffff
//delay
2:
subu a2, 0x1
nop
bgtz a2, 2b
如下图所示:
99%的人还看了
相似问题
- 寄存器、缓存、内存之间的关系和区别
- 北邮22级信通院数电:Verilog-FPGA(10)第十周实验 实现移位寄存器74LS595
- PCIe寄存器之二
- 嵌入式养成计划-51----ARM--ARM汇编指令--内存读写指令--程序状态寄存器传输指令--软中断指令--混合编程
- 野火霸天虎 STM32F407 学习笔记_3 尝试寄存器映射方式点亮 LED 灯
- verilog——移位寄存器
- ARMday03(寄存器读写、栈、程序状态寄存器、软中断和异常、混合编程)
- 【单片机基础小知识-如何通过指针来读写寄存器】
- verilog 每日一练- 移位寄存器
- 汇编的各种指令(数据搬移、移位、位运算、算数、比较、跳转、特殊功能寄存器、单寄存器、多寄存器、栈指针指令)
猜你感兴趣
版权申明
本文"迅为龙芯2K1000开发板通过汇编控制GPIO":http://eshow365.cn/6-14828-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!