1、GPxCON、GPxDAT寄存器分析
GPJ0端口一共有8个引脚,分别记作:GPJ0_0 ~ GPJ0_7,相关重要寄存器就是GPJ0CON和GPJ0DAT
GPJ0CON寄存器中设置8个引脚的工作模式(32/8=4,每个引脚可以分到4位,譬如GPJ0_0对应的bit位为0 ~ 3bit,GPJ0_3对应的位为bit12 ~ bit15。工作方法是:给相应的寄存器位写入相应的值,该引脚硬件就会按照相应的模式去工作。譬如给bit12 ~ bit15写入0b0001,GPJ0_3引脚就成为输出模式了)
2、从零开始写代码操作寄存器
需要那些先决条件才能写呢?
(1)、硬件接法和引脚:GPJ0_3、GPJ0_4、GPJ0_5低电平亮/高电平灭
(2)、GPJ0CON 地址(0xE020024)寄存器和GPJ0DAT(0xE0200244)寄存器
(3)、工程管理:Makefile、mkv210_image.c、write2sd、说明。
根据以上分析,我们就知道代码的写法了,代码所要完成的动作就是:把相应的配置数据写入相应的寄存器即可。
注:看数据手册GPJ0CON有8个引脚,每个引脚占4位,这4位可以设置8种模式。其实我们只关心的是第3,4、5这三个引脚。在此根据朱老师讲的设置GPJ0CON时,用十六进制(1位表示4位2进制数)写入的是0x11111111,把8个引脚全部设置为输出模式。
GPJ0DAT查数据手册有8个bit位可设置。对应GPJ0CON的8个引脚。在此根据朱老师设置是把这8个位全部设置为0(即把0x0设置到GPJ0DAT),即输出低电平。

/*
*   文件名:led.S
*   作者:  张军
*   描述:   这是我们一步步点亮LED教程自己写的第一个裸机程序
*/_start:         //_start:是标号,以这开头是写汇编的规则//第一步:把0x11111111写入0xE0200240(GPJ0CON)位置ldr r0, =0x11111111    //从后面的=可以看出用的是ldr是伪指令,因为需要编译器来判断这个ldr r1, =0xE0200240  //是否是合法立即数,一搬写代码都用ldr伪指令。ldr既是伪指令又是指令。区分看后面是=还是#号str r0, [r1]           //寄存器间接寻址。功能是把r0中的数写入到r1中数为地址的内存中去//第二步:把0x0写入0xE0200244(GPJ0DAT)位置ldr r0, =0x0ldr r1, =0xE0200244str r0, [r1]            //把0写入到GPJ0DAT寄存器中,引脚即输出低电平,LED点亮flag:b flag                  //这两行写了一个死循环。因为裸机程序是直接在CPU上运行的,CPU//逐行运行裸机程序直到CPU断电关机。如果我们的程序所有代码都//执行完了CPU就会跑飞(跑飞后是未定义的,所以千万不要让CPU跑飞)//不让CPU跑飞的办法就是在整个程序执行完添加死循环。

一步步点亮LED3_从零开始手写汇编点亮LED相关推荐

  1. 深蓝学院《从零开始手写VIO》作业七

    深蓝学院<从零开始手写VIO>作业七 深蓝学院<从零开始手写VIO>作业七 深蓝学院<从零开始手写VIO>作业七 将第二讲中的仿真数据(视觉特征,imu数据)接入V ...

  2. 深蓝学院《从零开始手写VIO》作业六

    深蓝学院<从零开始手写VIO>作业五 深蓝学院<从零开始手写VIO>作业六 1. 证明题 2. 代码题 深蓝学院<从零开始手写VIO>作业六 1. 证明题 证明Dy ...

  3. 深蓝学院《从零开始手写VIO》作业五

    深蓝学院<从零开始手写VIO>作业五 1. 完成Bundle Adjustment求解器 2. 完成测试函数 3. 论文总结 1. 完成Bundle Adjustment求解器 完成单目 ...

  4. 深蓝学院《从零开始手写VIO》作业四

    深蓝学院<从零开始手写VIO>作业四 深蓝学院<从零开始手写VIO>作业四 1. 信息矩阵分析 2. Bundle Adjustment信息矩阵的计算 深蓝学院<从零开始 ...

  5. 深蓝学院《从零开始手写VIO》作业三

    深蓝学院<从零开始手写VIO>作业三 深蓝学院<从零开始手写VIO>作业三 1. 代码修改 2. 公式推导 3. 公式证明: 深蓝学院<从零开始手写VIO>作业三 ...

  6. 深蓝学院《从零开始手写VIO》作业一

    深蓝学院<从零开始手写VIO>作业一 深蓝学院<从零开始手写VIO>作业一 1. VIO文献阅读 1.1 视觉与IMU进行融合之后有何优势? 1.2 有哪些常见的视觉+IMU融 ...

  7. druid连接池初始化慢_从零开始手写 mybatis (三)jdbc pool 从零实现数据库连接池

    前景回顾 第一节 从零开始手写 mybatis(一)MVP 版本 中我们实现了一个最基本的可以运行的 mybatis. 第二节 从零开始手写 mybatis(二)mybatis interceptor ...

  8. node怎么把token放到redis_从零开始手写 redis(八)朴素 LRU 淘汰算法性能优化

    前言 java从零手写实现redis(一)如何实现固定大小的缓存? java从零手写实现redis(三)redis expire 过期原理 java从零手写实现redis(三)内存数据如何重启不丢失? ...

  9. 从零开始手写VIO 第二章 IMU传感器

    第二章 IMU传感器 课程代码: https://github.com/kahowang/Visual_Internal_Odometry/tree/main/%E7%AC%AC%E4%BA%8C%E ...

最新文章

  1. 【linux】Valgrind工具集详解(十):SGCheck(检查栈和全局数组溢出)
  2. Oracle之sqlpluse显示格式
  3. bzoj3122 [SDOI2013]随机数生成器
  4. Eclipse Code Review(代码审查)工具介绍
  5. 微服务架构日志集中化 安装 EFK (Fluentd ElasticSearch Kibana) 采集nginx日志
  6. oracle语句借书,Oracle SQL题目及其解答(借书卡、图书、借书记录)
  7. android tv ko,Android TV 键值修改流程
  8. 下班理财超过上班赚钱
  9. 融入常识知识的生成式对话摘要
  10. 谷粒学院(二十一)网关Gateway
  11. 洛谷OJ P1036 选数
  12. C 语言 去除字符串中空格函数
  13. 20140925百度校园招聘一面
  14. 腾讯+android+hotfix,发布到安卓平台报这个错误,xLua exception : xlua.access, no field __Hotfix0_Update...
  15. office文件图标显示不正常
  16. 头盔佩戴检测(行人跟踪技术检测)
  17. hyperf中的缓存之CacheEvict
  18. 一个人怎样才算见过世面?
  19. Python3.7在 Geany下编译出现SyntaxError: Non-UTF-8 code starting with '\xb3'错误及实例化方法时提示没有实参的解决方法。
  20. 学Java开发到底能做什么工作?

热门文章

  1. 23种java设计模式之模板模式
  2. 家里扯了千兆网线网速还是上不去,看看这个对你有没有帮助
  3. VMware 10设备CentOs 6.5
  4. Voxgraph: Globally Consistent, Volumetric Mapping Using Signed Distance Function Submaps
  5. python分布爬虫_大神教你13天搞定Python分布爬虫(3)
  6. [work] 如何理解泛函以及变分
  7. 7.3 Uipath UiPath之获取邮件相关信息
  8. [图像识别]11.OpenCV的角点检测 FAST和OBR算法
  9. 代码混淆后日志的解读工具-retrace
  10. java计算机毕业设计企业进销管理系统的设计与实现源代码+数据库+系统+lw文档