GPIO实验

news2024/11/17 15:56:21

一、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, .elf是Linux可执行文件的后缀

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

交叉编译工具链在32位ubuntu上可以正常使用,但是在64位的需要执行这样一条命令

sudo apt-get install lib32z1 lib32ncurses

 

 先rm掉报错的文件,然后

sudo apt update

 

好家伙和我套娃呢

sudo rm /var/lib/apt/extended_states 

然后在

sudo apt update

 E: Unable to locate package lib32ncurses5

  TARGET = LED-ASM
  CROSS_COMPILE = arm-none-linux-gnueabi-
  CC = $(CROSS_COMPILE)gcc
  LD = $(CROSS_COMPILE)ld
  OBJCOPY = $(CROSS_COMPILE)objcopy
  
  all:
          $(CC) -c $(TARGET).s -o $(TARGET).o
          $(LD) $(TARGET).o -Ttext 0x40005000 -o $(TARGET).elf
         $(OBJCOPY) -O binary -S $(TARGET).elf $(TARGET).bin
 
  clean:
         rm $(TARGET).o $(TARGET).elf $(TARGET).bin

   1 
  2 .text
  3 _start:
  4 
  5 LED_CONFIG:
  6         LDR R2, =0x11000c40
  7         LDR R1, =0x10000000
  8         STR R1, [R2]
  9 
 10 LED_ON:
 11         LDR R2, =0x11000c44
 12         LDR R1, =0x00000080
 13         STR R1, [R2]
 14         B STOP
 15 
 16 LED_OFF:
 17         LDR R2, =0x11000c44
 18         LDR R1, =0x00000000
 19         STR R1, [R2]
 20 
 21 STOP:
 22         B STOP
 23 .end

然后把编译好滴.bin文件传给我们的开发板

 

 

 

go 0x40008000 

成功点亮LED2

四、LED实验

现在写个程序让LED2闪烁

.text
_start:

MAIN:
    BL LED_CONFIG
LOOP:
    BL LED_ON
    BL DELAY
    BL LED_OFF
    BL DELAY
    B LOOP 

LED_CONFIG:
    LDR R2, =0x11000c40
    LDR R1, =0x10000000
    STR R1, [R2]
    MOV PC, LR

LED_ON:
    LDR R2, =0x11000c44
    LDR R1, =0x00000080
    STR R1, [R2]
    MOV PC, LR

LED_OFF:
    LDR R2, =0x11000c44
    LDR R1, =0x00000000
    STR R1, [R2]
    MOV PC, LR
DELAY:
    LDR R1, =100000000
L:
    SUB R1, R1, #1
    CMP R1, #0
    BNE L
    MOV PC, LR    

STOP:
    B STOP
.end

运行一下没啥毛病。

本来想写个流水灯来着,太麻烦了,再写个LED3闪烁吧,等以后用C写

 

 

 

 

 

 

 

.text
_start:

MAIN:
    BL LED_CONFIG
LOOP:
    BL LED_ON
    BL DELAY
    BL LED_OFF
    BL DELAY
    B LOOP 

LED_CONFIG:
    LDR R2, =0x11000c20
    LDR R1, =0x00000001
    STR R1, [R2]
    MOV PC, LR

LED_ON:
    LDR R2, =0x11000c24
    LDR R1, =0x00000001
    STR R1, [R2]
    MOV PC, LR

LED_OFF:
    LDR R2, =0x11000c24
    LDR R1, =0x00000000
    STR R1, [R2]
    MOV PC, LR
DELAY:
    LDR R1, =100000000
L:
    SUB R1, R1, #1
    CMP R1, #0
    BNE L
    MOV PC, LR    

STOP:
    B STOP
.end

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第十七讲:神州三层交换机DHCP服务器配置

DHCP是基于Client-Server模式的协议,DHCP客户机向DHCP服务器索取网络地址及配置参数;服务器为客户机提供网络地址及配置参数;当DHCP客户机和DHCP服务器不在同一子网时,需要由DHCP中继为DHCP客户机和DHCP服务器传递DHCP…

java企业通知小程序微信消息推送小程序企业消息通知系统网站源码

简介 本系统主要是利用小程序和springboot开发的企业分组消息推送,主要是员工关注小程序,由分组领导创建消息主体并设置消息提醒时间,利用微信的消息模板对选定的员工进行消息提醒推送。比如公司的技术部需要在11月3号早上8点举行晨会&#…

【Java编程进阶】面向对象思想初识

推荐学习专栏:Java 编程进阶之路【从入门到精通】 文章目录1. 面向对象初识2. 类和对象2.1 类的定义2.2 对象的创建和使用3. 构造方法4. 方法重载5. static 关键字5.1 static 方法5.2 static 变量6. 对象的引用和 this7. 总结1. 面向对象初识 之前我们学习了 C 语言…

P2367 语文成绩和P5542 Painting The Barn S(一维和二维差分)

目录 前言 一、P2367 语文成绩 二、P5542 Painting The Barn S 前言 图文详解一维差分 图文详解二维差分 一、P2367 语文成绩 题目背景: 语文考试结束了,成绩还是一如既往地有问题。 题目描述: 语文老师总是写错成绩,所以当…

关于C语言中内存分配

一、static在C语言里面可以用来修饰变量,也可以用来修饰函数。 1、 先看用来修饰变量的时候。变量在C语言里面可分为存在全局数据区、栈和堆里。 其实我们平时所说的堆栈是栈而不是堆,不要弄混。 例如:在file.c中 int a ; int main() { int b…

如何在 Python 中自动化处理 Excel 表格?

考虑一个场景,要求在网站上为 30,000 名员工创建一个帐户。手动重复执行此任务会非常枯燥乏味。此外,这将花费太多时间,这不是一个明智的决定。 现在想象一下从事数据输入工作的员工的生活。他们的工作是从 Excel 表格中获取数据并将其插入其…

CSS 实现灯笼动画,祝大家元旦快乐

前言 👏CSS 实现大红灯笼动画,祝大家元旦快乐,2023越来越棒!速速来Get吧~ 🥇文末分享源代码。记得点赞关注收藏! 1.实现效果 2.实现步骤 定义一个灯笼的背景色bg,线条颜色lineColor :root …

数字时代下, 企业如何保证数据的安全

随着全球数字化进程的蓬勃发展,在互联网时代下技术和数据深度融合的数字经济模式为许多行业带来了更大创收。数据也已经成为了五大核心生产要素之一,驱动着国家、社会、企业全方位高速发展。“迎接数字时代,激活数据要素潜能,推进…

四、 Spring-MVC

MVC MVC :Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计规范。本质上也是一种解耦。 Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常…

使用CLIP构建视频搜索引擎

CLIP(Contrastive Language-Image Pre-training)是一种机器学习技术,它可以准确理解和分类图像和自然语言文本,这对图像和语言处理具有深远的影响,并且已经被用作流行的扩散模型DALL-E的底层机制。在这篇文章中,我们将介绍如何调整…

再获权威认可 百分点科技入选Forrester AI/ML平台主流供应商

近日,全球领先的研究和咨询公司Forrester发布了2022年第四季度中国AI/ML(人工智能/机器学习)平台报告《The AI/ML Platform Landscape In China, Q4 2022》,系统分析了AI/ML平台市场的业务价值、市场成熟度及市场动态,…

python基础语法24-多线程实操

上一节说了多线程的理论知识,今天来实际操作一下。 1.创建线程 python中有2中方法创建线程,分别为函数和类继承 (1).使用函数来创建线程 调用 _thread 模块中的start_new_thread()函数来产生新线程。语法如下: _thread.start_new_thread ( function, args[, kwargs] ) 参数说…

保护小程序,防止反编译:打造不怕反编译的小程序

保护小程序,防止反编译 打造不怕反编译的小程序 这几年,小程序、小游戏,非常火。 业内人都知道,小程序或小游戏,就是H5应用,就是htmlJS。这类应用,反编译很容易,网上就有很多方法教程。 对小…

我坦白→低代码功能我有,SQL练习题、数据可视化、数据填充助你高效

简介 今天勇哥看了一下群里的聊天信息,大家都在说低代码平台,见大家对于低代码这么热衷的情况下,勇哥也不藏着掖着了,先放几个低代码功能出来,给大家玩一玩,更多的功能敬请期待。 帮勇哥投个票&#xff1…

Docker进阶 — 一文掌握Docker基础

Docker进阶 — 一文掌握Docker基础 文章目录Docker进阶 --- 一文掌握Docker基础一、初识 Docker1. 什么是Docker2. Docker架构3. DockerHub4. Docker运行模式5. Docker和虚拟机的区别二、Docker 的安装1. Linux安装Docker2. Window 安装Docker环境配置1. 开启 Hyper-V服务2. 安…

五款炫酷精美动态登录页面,彩虹气泡动态云层深海灯光水母炫酷星空蛛网HTMLCSS源码

完整源码详见 微信公众号&#xff1a;创享日记 对话框发送&#xff1a;登录页面 获取HTMLCSSjs等源码文件 一、彩虹气泡登录页面 效果图&#xff1a; HTML源码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-…

linux 下coredump 生成及调试分析

Windows环境崩溃问题&#xff08;dump&#xff09;可根据vs调试或windbg工具查看.linux环境崩溃文件为core文件&#xff0c;可以使用gdb进行调试分析。 前提&#xff1a;都是都是用了root权限的用户操作。 1.生成core文件的前提 产生coredump的条件&#xff0c;首先需要确认…

优化改进YOLOv5算法之添加RepVGG模块(超详细)

在前面的文章中已经详细介绍了在本机上安装YOLOv5的教程&#xff0c;安装YOLOv5可参考前面的文章YOLOv5训练自己的数据集(超详细)https://blog.csdn.net/qq_40716944/article/details/118188085 目录 1、RepVGG原理 1.1 模型定义 1.2 为什么要用VGG式模型 1.3 结构重参数化…

基于ssm+mysql+jsp实现水果蔬菜商城系统

基于ssmmysqljsp实现水果商城系统一、系统介绍1、系统主要功能&#xff1a;2、环境配置二、功能展示1.主页(客户)2.登陆&#xff08;客户&#xff09;3.我的购物车(客户)4.我的订单&#xff08;客户&#xff09;5.主页&#xff08;管理员&#xff09;6.订单管理&#xff08;管理…

python寻找男厕所小便池的最佳站位

题目描述 相信我&#xff0c;每一个人内在都是有精神洁癖的。尤其是在题目所在的场景中。 下面我们就用一个算法来衡量一下&#xff01;&#xff01;&#xff01; 在考场里&#xff0c;一排有 N 个座位&#xff0c;分别编号为 0, 1, 2, …, N-1 。 当学生进入考场后&#xff0…