当前位置: 首页 > news >正文

迅为龙芯2K1000开发板通过汇编控制GPIO

上一小节,我们使用了 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

如下图所示:

http://www.lryc.cn/news/176258.html

相关文章:

  • 合合信息、上海大学、华南理工大学发布业内首个古彝文编码“大字典” ,为古文字打造“身份证”
  • Django — 类视图和中间件
  • VMware安装CentOS Stream 8以及JDK和Docker
  • MySQL作业1
  • 基于微信小程序的家校通系统设计与实现(亮点:选题新颖、上传作业、批改作业、成绩统计)
  • uni-app问题记录
  • Leetcode---363周赛
  • Netty粘包与拆包问题
  • JS下载链接的两种方式
  • 手把手教你实现:将后端SpringBoot项目部署到华为云服务器上
  • 【红队攻防】从零开始的木马免杀到上线
  • Linux命令行操作:使用“more“命令进行分页显示
  • CentOS下安装MySQL 8.1及备份配置
  • 【RabbitMQ实战】06 3分钟部署一个RabbitMQ集群
  • (c语言)整形提升
  • 上传文件报错:The temporary upload location [/tmp/tomcat/xxx] is not valid
  • 直线模组的品牌有哪些?
  • 零基础学习ESP8266
  • 基于PYQT5的GUI开发系列教程【二】框架安装和基础环境配置
  • pg数据库操作,insert(sql)插入一条数据后获返回当前插入数据的id --chatGPT
  • 【数据结构-树】哈夫曼树
  • HarmonyOS 4.0 实况窗上线!支付宝实现医疗场景智能提醒
  • 【响应式布局】
  • Spring面试题23:Spring支持哪些事务管理类型?Spring框架的事务管理有哪些优点?你更倾向用哪种事务管理类型?
  • Leetcode—— LCR 122. 路径加密
  • 缓冲区溢出漏洞分析
  • 【高阶数据结构】红黑树(C++实现)
  • 算力百川汇蓝海,商海荡漾绘宏图
  • ORACLE 内存结构之系统全局区(SGA)
  • 主要文档分享网站一览