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适用于所有环境: (三…...
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; 在计算机眼中ÿ…...
命令模式 Command Pattern 《游戏设计模式》学习笔记
对于一般的按键输入,我们通常这么做,直接if按了什么键,就执行相应的操作 在这里我们是将用户的输入和程序行为硬编码在一起,这是我们很自然就想到的最快的做法。 但是如果这是一个大型游戏,往往我们需要实现一个按键…...
供水管网漏损监测,24小时保障城市供水安全
供水管网作为城市生命线重要组成部分,其安全运行是城市建设和人民生活的基本保障。随着我国社会经济的快速发展和城市化进程的加快,城市供水管网的建设规模日益增长。然而,由于管网老化、外力破坏和不当维护等因素导致的供水管网漏损…...
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 类型,用于表示布尔值,即逻辑值 true 和 false。 _Bool 类型也是一种整数类型。 原则上 _Bool 类型只占用一位存储空间。 C语言将非 0 的数当为 true,0 当为 false。 代码示例: #include<stdio.h> int…...
【python爬虫】获取某一个网址下面抓取所有的a 超链接下面的内容
import requests as rq from bs4 import BeautifulSoup as bs import re# rooturl是传的是我需要查询和抓取的一个网址,可以是html js 等 def gethtml(rooturl, encoding"utf-8"):#默认解码方式utf-8response rq.get(rooturl)response.encoding encodin…...
AutoDL从0到1搭建stable-diffusion-webui
前言 AI绘画当前非常的火爆,随着Stable diffusion,Midjourney的出现将AI绘画推到顶端,各大行业均受其影响,离我们最近的AI绘画当属Stable diffusion,可本地化部署,只需电脑配备显卡即可完成AI绘画工作&…...
手动调整broker扩容后的旧topic分区
在broker扩容了两台机器之后,想让旧topic:quickstart76-events的分区也能铺满broker 1、创建一个topics-to-move.json json文件 $ vim topics-to-move.json json {"topics": [{"topic":"quickstart76-events"}],"v…...
【LeetCode-简单】剑指 Offer 25. 合并两个排序的链表(详解)
题目 入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 本题与主站 21 题相同:力扣 题目地址&#x…...
Java版工程行业管理系统源码-专业的工程管理软件-em提供一站式服务
Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目…...
如何将微信聊天记录永久保存并深度分析?WeChatMsg终极解决方案
如何将微信聊天记录永久保存并深度分析?WeChatMsg终极解决方案 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/…...
暗黑2存档编辑神器:5分钟解锁单机模式的无限可能
暗黑2存档编辑神器:5分钟解锁单机模式的无限可能 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 你是否曾梦想在暗黑破坏神2中拥有完美的角色?是否厌倦了反复刷装备的枯燥过程?d2s-editor这款…...
实战指南:基于PaddleOCR的车牌识别自定义数据集训练全流程
1. 从零开始准备车牌识别数据集 第一次接触PaddleOCR做车牌识别时,最让我头疼的就是数据集准备。网上公开的车牌数据集要么格式不统一,要么数量太少。经过几个项目的摸索,我总结出一套高效的数据处理方法。 车牌数据集通常包含两部分…...
快速上手LongCat动物百变秀:从安装到出图完整流程
快速上手LongCat动物百变秀:从安装到出图完整流程 1. 认识LongCat动物百变秀 LongCat动物百变秀是一款基于美团开源技术的智能图片编辑工具,它能通过简单的文字描述对动物图片进行创意编辑。想象一下,你只需要上传一张猫咪照片,…...
手把手教程:用EagleEye镜像3步实现实时目标检测,小白也能轻松上手
手把手教程:用EagleEye镜像3步实现实时目标检测,小白也能轻松上手 1. 为什么选择EagleEye镜像? 目标检测是计算机视觉中最基础也最重要的任务之一,但传统方法往往面临两个难题:要么速度太慢无法实时处理,…...
突破性AI文献管理:Zotero-GPT智能插件深度解析与实战指南
突破性AI文献管理:Zotero-GPT智能插件深度解析与实战指南 【免费下载链接】zotero-gpt GPT Meet Zotero. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-gpt 在学术研究领域,文献管理一直是研究者面临的核心挑战。每天面对海量的学术论文&…...
忍者像素绘卷入门必看:理解‘查克拉聚合’过程——从文本到像素的映射逻辑
忍者像素绘卷入门必看:理解查克拉聚合过程——从文本到像素的映射逻辑 1. 认识忍者像素绘卷 忍者像素绘卷是一款基于Z-Image-Turbo深度优化的图像生成工作站,它将传统忍者文化与现代AI图像生成技术完美结合。这款工具特别适合喜欢复古游戏风格和忍者题…...
游戏洞察力 | 为什么塔防游戏总能赚钱?从玩法设计看品类底层逻辑
在上一篇内容中,我们深入剖析了塔防游戏的商业价值核心,发现其凭借低门槛、高覆盖的用户基础、可深度挖掘的策略空间以及强兼容的玩法框架,成为天然适配广告变现的优质手游品类,也理解了这一经典品类能够长期稳居市场的底层逻辑。…...
【更新至2024年】上市公司ESG评级评分数据合集(十份数据:华证年度、华证季度、Wind、商道融绿、富时罗素、彭博、润灵环球、MSCI、cnrds、盟浪)
【更新至2024年】上市公司ESG评级评分数据合集(十份数据:华证年度、华证季度、Wind、商道融绿、富时罗素、彭博、润灵环球、MSCI、cnrds、盟浪) 一、2009-2024年上市公司华证esg评级、评分年度数据(含细分项) 二、20…...
《AI Agent生产力部署指南:OpenClaw + vLLM 本地化实战——(三)OpenClaw与LLM工具链适配》
上一章节中我们完整介绍了如何在服务器中配置vLLM服务,如何运行vLLM,以及如何搭建本地机器作为中间跳转连接虚拟机与服务器的通信。 本章第五节完成最后一个步骤对openclaw的相关配置,让本地能成功对话虚拟机,虚拟机成功调用服务器模型。 下面直接开始吧! (五)配置ope…...
