LV.12 D12 GPIO实验 学习笔记

一、GPIO简介

        GPIO(General-purpose input/output)即通用型输入输出,GPIO可以控制连接在其之上的引脚实现信号的输入和输出

芯片的引脚与外部设备相连,从而实现与外部硬件设备的通讯、控制及信号采集等功能

实验步骤
    1. 通过电路原理图分析LED的控制逻辑 

    2. 通过电路原理图查找LED与Exynos4412的连接关系

    3. 通过数据手册分析GPIO中哪些寄存器可以控制LED

    4. 通过程序去操控对应的寄存器完成对LED的控制
 

二、GPIO寄存器分析

高电平导通,低电平截止

 

 

 

 

  该实验需要输出,所以就是Output模式,GPX2CON[7] = 0x1

 输出高电平就对应位写1,输出低电平就对应位写0

三、GPIO编程

预处理->编译->汇编->链接

gcc -E

gcc -S

gcc -c

gcc

链接使用的工具是ld,objcopy是对可执行文件进行转化

.elf是Linux可执行文件的后缀

-Ttext 0x40005000  是将程序放到内存上,保证程序可以执行。

led-asm.s:

.text
_start:LED_CONFIG:LDR R2, =0x11000c40LDR R1, =0x10000000STR R1, [R2]LED_ON:LDR R2, =0x11000c44LDR R1, =0x00000080STR R1, [R2]B STOPLED_OFF:LDR R2, =0x11000c44LDR R1, =0x00000000STR R1, [R2]STOP:B STOP
.end

 Makefile:

 TARGET = led-asmCROSS_COMPILE = arm-none-linux-gnueabi-CC = $(CROSS_COMPILE)gccLD = $(CROSS_COMPILE)ldOBJCOPY = $(CROSS_COMPILE)objcopyall:$(CC) -c $(TARGET).s -o $(TARGET).o$(LD) $(TARGET).o -Ttext 0x40005000 -o $(TARGET).elf$(OBJCOPY) -O binary -S $(TARGET).elf $(TARGET).binclean:rm $(TARGET).o $(TARGET).elf $(TARGET).bin

然后通过共享文件夹吧编译好的.bin文件传给windows

 先输入loadb 0x40008000,把程序下载到0x40008000地址,然后发送Kermit协议的文件,选择led-asm.bin文件,然后输入go 0x40008000,跳转到0x40008000地址执行程序。led就会熄灭。

 四、LED实验

 写一个程序让LED2闪烁

.text
_start:MAIN:BL LED_CONFIG
LOOP:BL LED_ONBL DELAYBL LED_OFFBL DELAYB LOOP LED_CONFIG:LDR R2, =0x11000c40LDR R1, =0x10000000STR R1, [R2]MOV PC, LRLED_ON:LDR R2, =0x11000c44LDR R1, =0x00000080STR R1, [R2]MOV PC, LRLED_OFF:LDR R2, =0x11000c44LDR R1, =0x00000000STR R1, [R2]MOV PC, LR
DELAY:LDR R1, =100000000
L:SUB R1, R1, #1CMP R1, #0BNE LMOV PC, LR    STOP:B STOP
.end

再写一个让LED3闪烁

 

 让LED3闪烁的程序如下:

.text
_start:MAIN:BL LED_CONFIG
LOOP:BL LED_ONBL DELAYBL LED_OFFBL DELAYB LOOP LED_CONFIG:LDR R2, =0x11000c20LDR R1, =0x00000001STR R1, [R2]MOV PC, LRLED_ON:LDR R2, =0x11000c24LDR R1, =0x00000001STR R1, [R2]MOV PC, LRLED_OFF:LDR R2, =0x11000c24LDR R1, =0x00000000STR R1, [R2]MOV PC, LR
DELAY:LDR R1, =100000000
L:SUB R1, R1, #1CMP R1, #0BNE LMOV PC, LR    STOP:B STOP
.end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/172958.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序 slot 不显示

问题:创建组件&#xff0c;使用带名字的slot&#xff0c;页面调用组件使用slot不显示 源码&#xff1a; 组件xml <view class"p-item br24" style"{{style}}"><slot name"right" wx:if"{{!custBottom}}"></slot>&l…

【面试题08.06.汉诺塔问题】

目录 一、题目描述二、算法原理三、代码实现 一、题目描述 二、算法原理 三、代码实现 class Solution { public:void hanota(vector<int>& A, vector<int>& B, vector<int>& C) {int nA.size();_hanota(n,A,B,C);}void _hanota(int n,vector&l…

kafka3.X基本概念和使用

kafka基本概念和使用 文章目录 kafka基本概念和使用 kafka的概念基本概念Kafka的使用 首先kafka的安装kafka的简单实用和理解搭建集群&#xff08;3个节点&#xff09;windows版本环境搭建 本文"kafka的概念"部分是在[初谈Kafka][ https://juejin.im/post/5a8e7f…

python:使用Scikit-image对遥感影像进行形态学轮廓特征提取(contour)

作者:CSDN @ _养乐多_ 在本博客中,我们将介绍如何使用Scikit-Image来进行形态学轮廓特征提取(contour),并且提供一个示例代码,演示了如何在单波段遥感图像上应用这些方法。 形态学轮廓特征提取是一种用于图像处理和分析的技术,旨在检测和描述图像中的对象的边界或外围…

Glide原理

本文基于Carson整理 1.简介 相比其他几种图片加载框架&#xff0c;Glide性能最好。这得益于其高效的图片缓存策略 其还有多样化的媒体格式加载&#xff1a;如GIF、Video&#xff0c;对于商城首页需展示丰富样式、信息的页面需求来说&#xff0c;也是必不可少的。 2.加载原理…

【算法|动态规划No.32 | 完全背包问题】完全背包模板题

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

vue 内置指令-v-pre/v-memo

一、v-pre 使用了该指令的元素和子元素会被编译忽略&#xff0c;也就是不进行编译&#xff0c;其中包含的所有vue模版语法都会原样显示&#xff0c;作用加快vue的编译 例子&#xff1a; <p v-pre>{{不会被编译}}<span v-text"msg"></span></p&…

Steger算法实现结构光光条中心提取(python版本)

Steger算法原理 对结构光进行光条中心提取时&#xff0c;Steger算法是以Hessian矩阵为基础的。它的基础步骤如下所示&#xff1a; 从Hessian矩阵中求出线激光条纹的法线方向在光条纹法线方向上将其灰度分布按照泰勒多项式展开&#xff0c;求取的极大值即为光条在该法线方向上…

鸡尾酒学习——薄荷夏日

1、材料&#xff1a;冰块&#xff08;或者雪莲&#xff09;、牛奶、朗姆酒、绿薄荷糖浆&#xff1b; 2、口感&#xff1a;有点像是再吃薄荷奶糖口味的酒心奶糖。 3、视觉效果&#xff1a;白色加上一点点绿色&#xff1b; 4、步骤&#xff1a; &#xff08;1&#xff09;向摇壶内…

【java学习—十】异常(1)

文章目录 1. 概念1.1. 前言1.2. java中的异常 2. java运行时异常举例3. 总结 1. 概念 1.1. 前言 任何一种程序设计语言设计的程序在运行时都有可能出现错误&#xff0c;例如除数为 0 &#xff0c;数组下标越界&#xff0c;要读写的文件不存在等等。     捕获错误最理想的是…

AWTK 液体流动效果控件发布

液体流动效果控件。 主要特色&#xff1a; 支持水平和垂直方向。支持正向和反向流动。支持设置头尾的图片。支持设置流动的图片。支持设置速度的快慢。支持启停操作。 准备 获取 awtk 并编译 git clone https://github.com/zlgopen/awtk.git cd awtk; scons; cd -运行 生成…

不一样的网络协议-------KCP协议

1、kcp 的协议特点 1.1、RTO 不翻倍 RTO(Retransmission TimeOut)&#xff0c;重传超时时间。tcp x 2&#xff0c;kcp x 1.5&#xff0c;提高传输速度 1.2、选择重传 TCP丢包时会全部重传从该包开始以后的数据&#xff0c;而KCP选择性重传&#xff0c;只重传真正丢失的数据包…

2-多媒体数据压缩国际标准

文章目录 多媒体数据压缩编码的重要性和分类为什么要压缩?计算: 未压缩音频的数据率简答: 环绕声系统-作业题9(简述7.4.3全景声)计算: 未压缩图像的数据量-作业题10(估计尺寸及容量)计算: 未压缩视频的数据率 为什么能压缩?数据压缩编码的两大类无损压缩算法: LZ77-作业题6-(…

《动手学深度学习 Pytorch版》 10.3 注意力评分函数

上一节使用的高斯核的指数部分可以视为注意力评分函数&#xff08;attention scoring function&#xff09;&#xff0c;简称评分函数&#xff08;scoring function&#xff09;。 后续把评分函数的输出结果输入到softmax函数中进行运算。最后&#xff0c;注意力汇聚的输出就是…

表的约束【MySQL】

文章目录 什么是约束DEFAULT&#xff08;默认约束&#xff09;NULL 与 NOT NULL&#xff08;非空约束&#xff09;COMMENT&#xff08;注释约束&#xff09;ZEROFILL&#xff08;零填充约束&#xff09;UNIQUE&#xff08;唯一键约束&#xff09;*PRIMARY KEY&#xff08;主键约…

Linux常用命令——chown命令

在线Linux命令查询工具 chown 用来变更文件或目录的拥有者或所属群组 补充说明 chown命令改变某个文件或目录的所有者和所属的组&#xff0c;该命令可以向某个用户授权&#xff0c;使该用户变成指定文件的所有者或者改变文件所属的组。用户可以是用户或者是用户D&#xff0…

Vuex模块化(modules)与namespaced(命名空间)的搭配

Vuex模块化&#xff08;modules&#xff09;与namespaced&#xff08;命名空间&#xff09;的搭配 Vuex模块化&#xff08;modules&#xff09;格式 原理&#xff1a;可以对Vuex的actions&#xff0c;mutations&#xff0c;state&#xff0c;getters四个属性综合成一个部分&a…

对Happens-Before的理解

Happens-Before Happens-Before 是一种可见性模型&#xff0c;也就是说&#xff0c;在多线程环境下。原本因为指令重排序的存在会导致数据的可见性问题&#xff0c;也就是 A 线程修改某个共享变量对 B 线程不可见。因此&#xff0c;JMM 通过 Happens-Before 关系向开发人员提供…

2023年香水行业数据分析:国人用香需求升级,高端香水高速增长

在人口结构变迁的背景下&#xff0c;“Z世代”作为当下我国的消费主力&#xff0c;正在将“悦己”消费推动成为新潮流。具备经济基础的“Z世代”倡导“高颜值”、“个性化”、“精致主义”&#xff0c;这和香水、香氛为代表的“嗅觉经济”的特性充分契合&#xff0c;因此&#…

【Docker从入门到入土 6】Consul详解+Docker https安全认证(附证书申请方式)

Part 6 一、服务注册与发现的概念1.1 cmp问题1.2 服务注册与发现 二、Consul ----- 服务自动发现和注册2.1 简介2.2 为什么要用consul&#xff1f;2.3 consul的架构2.3 Consul-template 三、consul架构部署3.1 Consul服务器Step1 建立 Consul 服务Step2 查看集群信息Step3 通过…