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

GPIO实验

一、GPIO

GPIO(General-purpose input/output)即通用型输入输出,GPIO可以控制连接在其之上的引脚实现信号的输入和输出
芯片的引脚与外部设备相连,从而实现与外部硬件设备的通讯、控制及信号采集等功能
在这里插入图片描述

LED实验步骤

最终目的:通过GPIO这个控制器去控制引脚产生高低电平从而控制LED灯的点亮和熄灭

实验: 以LED2灯 闪烁 为例

1. 通过电路原理图分析LED的控制逻辑	2. 通过电路原理图查找LED与Exynos4412的连接关系3. 通过数据手册分析GPIO中哪些寄存器可以控制LED4. 通过程序去操控对应的寄存器完成对LED的控制

第一步

得出结论高电平-亮 低电平-灭
下一步要找到CHG_COK这个网络标号,连接在4412芯片那一个引脚上
在这里插入图片描述

第二步

在这里插入图片描述

通过电路设计图中的网络标号CHG_COK,在芯片电路设计图中可以看到连接在4412芯片上面是GPX2这一组的第七个(GPX2_7)控制着该引脚
(这个引脚的名称为什么这么多呢,因为很多引脚的功能是复用的)

第三步

查看芯片手册分析哪些寄存器可以控制LED2
在这里插入图片描述
通过芯片手册可以看到GPX0, GPX1, GPX2, GPX3 这四组共有32个引脚,那么GPX2这一组就是有8个引脚。
在这里插入图片描述

GPX2CON(32Bit): 可以配置这一组引脚,这一组有八个引脚,都归这个寄存器来管理
GPX2DAT(32Bit): 存储这一组引脚的相关数据

在这里插入图片描述
这里看到对GPX2CON这个寄存器每一位是干什么的一个详解
GPX2CON[0]这一位可以管理GPX2_0这个引脚,以此类推 > GPX2CON[7]这一位可以管理GPX2_7这个引脚
我们这个实验目的:是想要通过GPIO这个寄存器产生一个高或低信号,去控制外面的LED的点亮和熄灭,所以设置成 0x = Output 输出功能,设置GPX2CON[7]这个寄存器的[31:28]这四位设置成0x1
设置了这四位只是将GPX2_7设置成输出功能,然后输出什么信号还是控制不了的

然后得通过GPX2DAT寄存器来向GPX2CON[7]发送数据
在这里插入图片描述
GPX2DAT(32bit,高位没有用)这七位每一位控制着一个引脚,如果GPX2DAT第0位写零,GPX2_0输出低电平,写1输出高电平。
那么GPX2DAT第7位写零,GPX2_7就输出低电平,写1输出高电平

第四步

在相应的地址中写数据进而控制响应的寄存器

led_asm.s 文件


.text	//代码的开始
_start:MAIN:BL LED_CONFIG	//跳转
LOOP:BL LED_ONBL DELAYBL LED_OFFBL DELAYB  LOOP/* 配置GPX2CON寄存器 */
LED_CONFIG:/* GPX2CON寄存器地址 */LDR R2, =0x11000c40/* 将GPX2CON[7]这个引脚的 [31:28]位设置成 0x1输出功能*/LDR R1, =0x10000000STR R1, [R2]MOV PC, LR/* 配置GPX2DAT寄存器 点亮*/
LED_ON:/* GPX2DAT寄存器地址 */LDR R2, =0x11000c44/* GPX2DAT第七位写0,从而向GPX2CON[7]这一位发送高电平 */LDR R1, =0x00000080STR R1, [R2]  MOV PC, LR/* 配置GPX2DAT寄存器 熄灭*/
LED_OFF:LDR R2, =0x11000c44LDR R1, =0x00000000STR R1, [R2]MOV PC, LR/*LED2灯 灭和亮  之间间隔的时间*/
DELAY:LDR R1, =100000000
L:SUB R1, R1, #1CMP R1, #0BNE LMOV PC, LRSTOP:B STOP.end

Makefile文件

/* 执行文件的名字 */
TARGET = led-asm/* 交叉编译器的前缀 */
CROSS_COMPILE = arm-none-linux-gnueabi-/* 完整的编译器名字 */
CC = $(CROSS_COMPILE)gcc/* 链接文件使用的工具ld */
LD = $(CROSS_COMPILE)ld/* objcopy这个工具可以将.elf文件编译成开发板可执行的文件 */
OBJCOPY = $(CROSS_COMPILE)objcopy/* 编译规则 */
all:/* 编译分四步:-E 预编译, -S 汇编, -c 目标文件(机器码),gcc 链接 *//* 写的就是汇编文件  随意直接进行 -c 形成目标文件  形成 .o 机器码*/$(CC) -c $(TARGET).s -o $(TARGET).o/* ld链接生成一个.elf可执行文件  链接的时候重定向一个地址 0x40008000 *//* -Ttext 0x40008000: 这个文件编译完成之后,将来这段程序放入 0x40008000 这个地址去运行 */$(LD) $(TARGET).o -Ttext 0x40008000 -o $(TARGET).elf/* 因为开发板上面没有Linux系统,.elf只能在Linux系统下运行,所以需要转换成开发板可执行的文件 *//* 	-O 指定转换binary格式 -S 转换.elf文件, 生成.bin文件 */$(OBJCOPY) -O binary -S $(TARGET).elf $(TARGET).binclean:rm $(TARGET).o $(TARGET).elf $(TARGET).bin  

相关文章:

GPIO实验

一、GPIO GPIO(General-purpose input/output)即通用型输入输出,GPIO可以控制连接在其之上的引脚实现信号的输入和输出 芯片的引脚与外部设备相连,从而实现与外部硬件设备的通讯、控制及信号采集等功能 LED实验步骤 最终目的&am…...

Docker-Compose编排与部署(lnmp实例)

第四阶段 时 间:2023年8月3日 参加人:全班人员 内 容: Docker-Compose编排与部署 目录 一、Docker Compose (一)概述 (二)Compose适用于所有环境: (三&#xf…...

Docker 网络模型使用详解 (1)Dockers网络基础

目录 环境准备 Dockers 网络基础 1.端口映射 查看随机映射端口范围 -p可以指定映射到本地端口 映射指定地址和指定端口 映射指定地址 宿主机端口随机分配 指定传输协议 端口暴露 容器互联 自定义网络 现在把container7加入到demo_net中 在启动一个容器加入到demo_net…...

【Spring】(四)Bean 的作用域和生命周期

文章目录 前言一、Bean 的作用域1.1 被修改的 Bean 案例1.2 作用域的定义1.3 Bean 的六种作用域1.4 Bean 作用域的设置 二、Spring 的执行流程 和 Bean 的生命周期2.1 Spring 的执行流程2.2 Bean 的生命周期2.3 Bean 生命周期的演示 前言 Bean 是 Spring 框架中的一个核心概念…...

卷积神经网络【图解CNN】

文章目录 1.卷积运算2.池化3.全连接层 卷积神经网络可以看作一个函数或者黑箱,输入就是图片的像素阵列,输出就是这个图片是什么? 图片是X,那么就输出‘x’,图片是‘O’,那么就输出O; 在计算机眼中&#xff…...

命令模式 Command Pattern 《游戏设计模式》学习笔记

对于一般的按键输入,我们通常这么做,直接if按了什么键,就执行相应的操作 在这里我们是将用户的输入和程序行为硬编码在一起,这是我们很自然就想到的最快的做法。 但是如果这是一个大型游戏,往往我们需要实现一个按键…...

供水管网漏损监测,24小时保障城市供水安全

供水管网作为城市生命线重要组成部分,其安全运行是城市建设和人民生活的基本保障。随着我国社会经济的快速发展和城市化进程的加快,城市供水管网的建设规模日益增长。然而,由于管网老化、外力破坏和不当维护等因素导致的供水管网漏损&#xf…...

How to Use Glslang

文章目录 Execution of Standalone Wrapper构建 (CMake)依赖关系构建步骤如果需要更改 GLSL 语法测试运行测试基本内部操作 Execution of Standalone Wrapper 要使用独立的二进制形式,请执行glslang,它将打印一条使用语句。基本操作是给它一个包含着色器…...

AcWing 24:机器人的运动范围 ← BFS、DFS

【题目来源】https://www.acwing.com/problem/content/description/22/【题目描述】 地上有一个 m 行和 n 列的方格,横纵坐标范围分别是 0∼m−1 和 0∼n−1。 一个机器人从坐标 (0,0) 的格子开始移动,每一次只能向左,右,上&#…...

RF手机天线仿真介绍(一):金属边框天线和LDS天线

目录 简介LDS天线LDS天线仿真 金属边框天线金属边框天线仿真 简介 最早的手机是外置式天线,从NOKIA开始采用内置式天线,开始采用内置金属片(一般是0.1MM厚的不锈钢片冲压而成),随后为降低成本,后来改用FPC…...

动手学深度学习—深度学习计算(层和块、参数管理、自定义层和读写文件)

目录 1. 层和块1.1 自定义块1.2 顺序块1.3 在前向传播函数中执行代码 2. 参数管理2.1 参数访问2.1.1 目标参数2.1.2 一次性访问所有参数2.1.3 从嵌套块收集参数 2.2 参数初始化2.2.1 内置初始化2.2.2 自定义初始化 2.3 参数绑定 3. 自定义层3.1 不带参数的层3.2 带参数的层 4. …...

Pytest学习教程_测试报告生成pytest-html(三)

前言 pytest-html 是一个用于生成漂亮的 HTML 测试报告的 pytest 插件。它可以方便地将 pytest 运行的测试结果转换为易于阅读和理解的 HTML 报告,提供了丰富的测试结果展示功能和交互性。 一、安装 # 版本查看命令 pytest版本: pytest --version pyte…...

模块化原理:source-map

1. webpack打包基本配置 1.安装webpack与webpack-cli npm i webpack webpack-cli 2.配置 "build":"webpack" 3. 新建webpack.config.js const path require(path); module.exports {// mode: "development",// 默认production(什么…...

【C++】开源:ncurses终端TUI文本界面库

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍ncurses终端文本界面库。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下…...

C语言的_Bool类型

C99 新增了 _Bool 类型&#xff0c;用于表示布尔值&#xff0c;即逻辑值 true 和 false。 _Bool 类型也是一种整数类型。 原则上 _Bool 类型只占用一位存储空间。 C语言将非 0 的数当为 true&#xff0c;0 当为 false。 代码示例&#xff1a; #include<stdio.h> int…...

【python爬虫】获取某一个网址下面抓取所有的a 超链接下面的内容

import requests as rq from bs4 import BeautifulSoup as bs import re# rooturl是传的是我需要查询和抓取的一个网址&#xff0c;可以是html js 等 def gethtml(rooturl, encoding"utf-8"):#默认解码方式utf-8response rq.get(rooturl)response.encoding encodin…...

AutoDL从0到1搭建stable-diffusion-webui

前言 AI绘画当前非常的火爆&#xff0c;随着Stable diffusion&#xff0c;Midjourney的出现将AI绘画推到顶端&#xff0c;各大行业均受其影响&#xff0c;离我们最近的AI绘画当属Stable diffusion&#xff0c;可本地化部署&#xff0c;只需电脑配备显卡即可完成AI绘画工作&…...

手动调整broker扩容后的旧topic分区

在broker扩容了两台机器之后&#xff0c;想让旧topic&#xff1a;quickstart76-events的分区也能铺满broker 1、创建一个topics-to-move.json json文件 $ vim topics-to-move.json json {"topics": [{"topic":"quickstart76-events"}],"v…...

【LeetCode-简单】剑指 Offer 25. 合并两个排序的链表(详解)

题目 入两个递增排序的链表&#xff0c;合并这两个链表并使新链表中的节点仍然是递增排序的。 示例1&#xff1a; 输入&#xff1a;1->2->4, 1->3->4 输出&#xff1a;1->1->2->3->4->4 本题与主站 21 题相同&#xff1a;力扣 题目地址&#x…...

Java版工程行业管理系统源码-专业的工程管理软件-em提供一站式服务

​ Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目…...

如何将微信聊天记录永久保存并深度分析?WeChatMsg终极解决方案

如何将微信聊天记录永久保存并深度分析&#xff1f;WeChatMsg终极解决方案 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/…...

暗黑2存档编辑神器:5分钟解锁单机模式的无限可能

暗黑2存档编辑神器&#xff1a;5分钟解锁单机模式的无限可能 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 你是否曾梦想在暗黑破坏神2中拥有完美的角色&#xff1f;是否厌倦了反复刷装备的枯燥过程&#xff1f;d2s-editor这款…...

实战指南:基于PaddleOCR的车牌识别自定义数据集训练全流程

1. 从零开始准备车牌识别数据集 第一次接触PaddleOCR做车牌识别时&#xff0c;最让我头疼的就是数据集准备。网上公开的车牌数据集要么格式不统一&#xff0c;要么数量太少。经过几个项目的摸索&#xff0c;我总结出一套高效的数据处理方法。 车牌数据集通常包含两部分&#xf…...

快速上手LongCat动物百变秀:从安装到出图完整流程

快速上手LongCat动物百变秀&#xff1a;从安装到出图完整流程 1. 认识LongCat动物百变秀 LongCat动物百变秀是一款基于美团开源技术的智能图片编辑工具&#xff0c;它能通过简单的文字描述对动物图片进行创意编辑。想象一下&#xff0c;你只需要上传一张猫咪照片&#xff0c;…...

手把手教程:用EagleEye镜像3步实现实时目标检测,小白也能轻松上手

手把手教程&#xff1a;用EagleEye镜像3步实现实时目标检测&#xff0c;小白也能轻松上手 1. 为什么选择EagleEye镜像&#xff1f; 目标检测是计算机视觉中最基础也最重要的任务之一&#xff0c;但传统方法往往面临两个难题&#xff1a;要么速度太慢无法实时处理&#xff0c;…...

突破性AI文献管理:Zotero-GPT智能插件深度解析与实战指南

突破性AI文献管理&#xff1a;Zotero-GPT智能插件深度解析与实战指南 【免费下载链接】zotero-gpt GPT Meet Zotero. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-gpt 在学术研究领域&#xff0c;文献管理一直是研究者面临的核心挑战。每天面对海量的学术论文&…...

忍者像素绘卷入门必看:理解‘查克拉聚合’过程——从文本到像素的映射逻辑

忍者像素绘卷入门必看&#xff1a;理解查克拉聚合过程——从文本到像素的映射逻辑 1. 认识忍者像素绘卷 忍者像素绘卷是一款基于Z-Image-Turbo深度优化的图像生成工作站&#xff0c;它将传统忍者文化与现代AI图像生成技术完美结合。这款工具特别适合喜欢复古游戏风格和忍者题…...

游戏洞察力 | 为什么塔防游戏总能赚钱?从玩法设计看品类底层逻辑

在上一篇内容中&#xff0c;我们深入剖析了塔防游戏的商业价值核心&#xff0c;发现其凭借低门槛、高覆盖的用户基础、可深度挖掘的策略空间以及强兼容的玩法框架&#xff0c;成为天然适配广告变现的优质手游品类&#xff0c;也理解了这一经典品类能够长期稳居市场的底层逻辑。…...

【更新至2024年】上市公司ESG评级评分数据合集(十份数据:华证年度、华证季度、Wind、商道融绿、富时罗素、彭博、润灵环球、MSCI、cnrds、盟浪)

【更新至2024年】上市公司ESG评级评分数据合集&#xff08;十份数据&#xff1a;华证年度、华证季度、Wind、商道融绿、富时罗素、彭博、润灵环球、MSCI、cnrds、盟浪&#xff09; 一、2009-2024年上市公司华证esg评级、评分年度数据&#xff08;含细分项&#xff09; 二、20…...

《AI Agent生产力部署指南:OpenClaw + vLLM 本地化实战——(三)OpenClaw与LLM工具链适配》

上一章节中我们完整介绍了如何在服务器中配置vLLM服务,如何运行vLLM,以及如何搭建本地机器作为中间跳转连接虚拟机与服务器的通信。 本章第五节完成最后一个步骤对openclaw的相关配置,让本地能成功对话虚拟机,虚拟机成功调用服务器模型。 下面直接开始吧! (五)配置ope…...