cortex-A7核LED灯实验--STM32MP157
实验目的:实现LED1 / LED2 / LED3三盏灯工作
一,分析电路图
1,思路
分析电路图可知:
网络编号 == 引脚编号
LED1 == PE10
LED2 ===> PF10
LED3 ===> PE8
2,工作原理:
写1:LED灯亮,写0:LED灯灭
二,框图
1,A7核和GPIO控制器:通过内部总线通讯,查看芯片手册可知总线为AHB4总线
2,(核外特殊功能寄存器):芯片厂家出厂时,固化到芯片内部的一端寻址空间,地址固定
3,A7核通过汇编指令 LDR / STR控制特殊功能器
4,根据框图需要分析:
RCC章节 == 使能GPIOE和GPIOF组控制器
GPIO章节 == 1)初始化GPIO引脚,2)引脚输出高低电平
三,分析RCC章节
1,确定总线连接
查看芯片手册:GPIO通过AHB4总线和RCC连接
2,基地址
GPIOF:0x50007000
GPIOE:0x50006000
RCC: 0x50000000
3,分析RCC_MP_AHB4ENSETR寄存器
作用:使能GPIO组寄存器
地址:0x50000000 + 0xA28 = 0x50000A28
伪代码:RCC_MP_AHB4ENSETR [4] = 1 === GPIOE
RCC_MP_AHB4ENSETR [5] = 1 === GPIOF
四,分析GPIO章节
1,概述
2,框图
1,分析GPIOx_MODER寄存器
作用:设置GPIO引脚模式(输入,输出,复用,模拟)本实验输出高低电平,选用输出
地址:0x50006000 + 0x00 = 0x50006000
0x50007000 + 0x00 = 0x50007000
伪代码:GPIOE_MODER [21:20] = 01 ==== LED1
GPIOF_MODER [21:20] = 01 ==== LED2
GPIOE_MODER [17:16] = 01 ==== LED3
2,分析GPIOx_OTYPER寄存器
推挽输出类型:PMOS管和NMOS管都可以进行工作
开漏输出类型:只有NMOS管可以进行工作
作用:设置GPIO引脚输出类型为推挽输出
地址:0x50006000 + 0x04 = 0x50006004
0x50007000 + 0x04 = 0x50007004
伪代码:GPIOE_OTYPER [10] = 0 ==== LED1
GPIOF_OTYPER [10] = 0 ==== LED2
GPIOE_OTYPER [8] = 01 ==== LED3
3,分析GPIOx_OSPEEDR寄存器
作用:设置GPIO引脚输出速率(低速、中速、高速、快速)
地址:0x50006000 + 0x08 = 0x50006008
0x50007000 + 0x08 = 0x50007008
伪代码:GPIOE_OSPEEDR [21:20] = 01 ==== LED1
GPIOF_OSPEEDR [21:20] = 01 ==== LED2
GPIOE_OSPEEDR [17:16] = 01 ==== LED3
4,分析GPIOx_PUPDR寄存器
作用:设置GPIO引脚是否需要上下拉电阻(禁止上下拉电阻、上拉、下拉、保留)本实验通过引脚控制灯的亮灭,需要禁止上下拉电阻
地址:0x50006000 + 0x0C = 0x5000600C
0x50007000 + 0x0C = 0x5000700C
伪代码:GPIOE_PUPDR [21:20] = 00 ====LED1
GPIOF_PUPDR [21:20] = 00 ====LED2
GPIOE_PUPDR [17:16] = 00 ====LED3
5,分析GPIOx_ODR寄存器
作用:设置引脚输出高 / 低电平写1:输出高电平,LED灯点亮 写0:输出低电平,LED灯熄灭
地址:0x50006000 + 0x14 = 0x50006014
0x50007000 + 0x14 = 0x50007014
伪代码:GPIOE_ODR [10] = 1 / 0 ====LED1
GPIOF_ODR [10] = 1 / 0 ====LED2
GPIOE_ODR [8] = 1 / 0 ====LED3
五,寄存器封装
1,单个寄存器封装
1、在汇编语言中0x50000A28代表一块地址空间,但是在C语言中表示十六进制数,在C语言中,如何将0x50000A28表示一块地址空间的(volatile unsigned int*)0x50000A28 ====> ldr r0,=0x50000A28
2、如何取出0x50000A28这块地址空间中的内容(*(volatile unsigned int*)0x50000A28) ====> ldr r1,[r0]
3、将0x50000A28这块地址空间中的第4位进行置1,保证其他位不变(*(volatile unsigned int*)0x50000A28) = (*(volatile unsigned int*)0x50000A28) | (0x1 << 4); ====> orr r1,r1,#(0x1 << 4) str r1,[r0]
4、用宏定义如何对寄存器进行封装#define RCC_MP_AHB4_ENSETR (*(volatile unsigned int*)0x50000A28) RCC_MP_AHB4_ENSETR = RCC_MP_AHB4_ENSETR | (0x1 << 4);RCC_MP_AHB4_ENSETR |= (0x1 << 4);
5、将GPIOE/GPIOF寄存器进行封装#define GPIOE_MODER (*(volatile unsigned int*)0x50006000) #define GPIOE_OTYPER (*(volatile unsigned int*)0x50006004)#define GPIOE_OSPEEDR (*(volatile unsigned int*)0x50006008)#define GPIOE_PUPDR (*(volatile unsigned int*)0x5000600C)#define GPIOE_ODR (*(volatile unsigned int*)0x50006014)
2,结构体封装寄存器
typedef struct{volatile unsigned int MODER; //MODERvolatile unsigned int OTYPER; //OTYPERvolatile unsigned int OOSPEEDR; //OSPEEDRvolatile unsigned int PUPDR; //PUPDRvolatile unsigned int IDR; //IDRvolatile unsigned int ODR; //ODR
}gpio_t;
#define GPIOE ((gpio_t*)0x50006000) 注释:GPIOE ===> 0x50006000
#define GPIOF ((gpio_t*)0x50007000) 注释:GPIOF ===> 0x50007000
访问结构体成员:GPIOE->MODER
相关文章:

cortex-A7核LED灯实验--STM32MP157
实验目的:实现LED1 / LED2 / LED3三盏灯工作 一,分析电路图 1,思路 分析电路图可知: 网络编号 引脚编号 LED1 PE10 LED2 > PF10 LED3 > PE8 2,工作原理: 写1:LED灯亮…...

WPF实战项目十三(API篇):备忘录功能api接口、优化待办事项api接口
1、新建MenoDto.cs /// <summary>/// 备忘录传输实体/// </summary>public class MenoDto : BaseDto{private string title;/// <summary>/// 标题/// </summary>public string Title{get { return title; }set { title value; }}private string con…...

clickhouse(十四、分布式DDL阻塞及同步阻塞问题)
文章目录 一、分布式ddl 阻塞、超时现象验证方法解决方案 二、副本同步阻塞现象验证解决方案 一、分布式ddl 阻塞、超时 现象 在clickhouse 集群的操作中,如果同时执行一些重量级变更语句,往往会引起阻塞。 一般是由于节点堆积过多耗时的ddl。然后抛出…...

怎么入门网络安全(黑客)?
目录: 一、自学网络安全学习的误区和陷阱 1.不要试图先成为一名程序员(以编程为基础的学习)再开始学习2.不要把深度学习作为入门第一课3.以黑客技能、兴趣为方向的自学误区:4.不要收集过多的资料二、学习网络安全的一些前期准备三…...

c++ boost::json
Boost社区12月11日发布了1.75版本,在之前,Boost使用Boost.PropertyTree解析JSON,XML,INI和INFO格式的文件。但是由于成文较早及需要兼容其他的数据格式,相比较于其他的…...

《Flink学习笔记》——第九章 多流转换
无论是基本的简单转换和聚合,还是基于窗口的计算,我们都是针对一条流上的数据进行处理的。而在实际应用中,可能需要将不同来源的数据连接合并在一起处理,也有可能需要将一条流拆分开,所以经常会有对多条流进行处理的场…...

openmmlab出现KeyError: ‘xxx is not in the model registry....‘
问题描述 在复现基于mmpose框架的算法时,运行程序出现KeyError: xxx is not in the model registry....的问题,报错原因是自定义的backbone等结构或者某些当前代码使用的方法没有注册到现有的包中, 导致在import的时候无法导入该方法。 解决方案 找到…...

错误代码0x80131500要怎么解决?快速修复方法
错误代码0x80131500通常与.NET Framework 相关的问题有关。它可能表示.NET Framework的安装损坏、版本冲突或系统文件缺失等。下面我们一起来探讨一下解决错误代码0x80131500有哪些。 以下是一些解决方法 安装最新的.NET Framework版本:访问Microsoft官方网站&…...

PMO(Project Management Office)
PMO 是项目管理办公室(Project Management Office)的缩写。它是组织内的一个部门或团队,负责支持和促进项目管理活动,以确保项目按时、按预算、按要求完成。 PMO 的职责和角色可以因组织的性质和需求而有所不同,但通常…...

STM32 CUBEMX CAN通信数据发送失败原因分析
CAN通信是一种数据通信协议,用于在不同设备之间进行通信。它是一种高效的、实时的、可靠的、多主机的、串行通信系统,通常用于汽车电子、工业自动化等领域。CAN通信协议是由德国BOSCH公司于1986年引入,并在欧洲和日本广泛使用。CAN通信具有独…...

长安链并行调度机制(2):DAG构建和从节点执行流程
长安链采用高效的并行调度方式执行交易,了解长安链交易调度、冲突检测和DAG构建流程有助于开发者更好地理解长安链并行调度的运行机制,帮助开发者编写高质量、低冲突的智能合约,更好地构建区块链应用。 上一篇内容我们说明了长安链交易调度、…...

leetcode做题笔记110. 平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 思路一:递归 int height(struct TreeNode* root) {if (root NULL) {return…...

iOS开发Swift-字符串与字符
1.字符串的定义 let someString "some string value"2.多行字符串的定义(""") let quotation """ 有一个人前来买瓜。 "这瓜甜吗?"他问。 """前一个"""前和后一个""&…...

Linux Kernel:syscall之fork与exec
环境: Kernel Version:Linux-5.10 ARCH:ARM64 一:前言 上一节我们提到了进程的产生方式fork,exec与clone,本节将详细分析fork和exec族系统调用的具体实现。通常这些调用不是由应用程序直接发出的,而是通过一个中间层调用,即负责与内核通信的C标准库。从用户状态切换到…...

CentOS 修改MySQL密码
CentOS 修改MySQL密码 1.登录MySQL 2.执行如下命令 update user set passwordpassword(mivbAs7Awc) where userroot;报错如下: Unknown column ‘password’ in ‘field list’ 3.执行如下命令 update user set passwordpassword(mivbAs7Awc) where userroot碰到…...

Android通过setaffinity实现绑核
有时候为了降低App算力占用,会把关键的线程绑定到大核中,下面介绍一种绑核的方式 查看绑核 查看pid :/ # ps -A | grep test u0_a15 25178 405 15950272 176544 do_epoll_wait 0 S com.test.jnites查看线程号 top -H -p 25178 25224 u0_…...

stm32的位带操作
在51单片机中,我们可以使用P2^1来对单片机的某一位进行操作,到了stm32,我们通过位带操作,将寄存器的每一位映射到一个32位的地址。如下是我查资料摘录的一些图片。 映射方式 SRAM: AliasAddr 0x22000000 (A-0X20000000)*8*4n*4…...

Java 电子招标采购系统源码:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展
营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展 传统采购模式面临的挑战 一、立项管理 1、招标立项申请 功能点:招标类项目立项申请入口,用户可以保存为草稿,提交。 2、非招标立项申请 功能点:非招标…...

https协议经过SpringMVC重定向之后变成http协议
之前项目的协议还是http,当改为https之后,就出现了这个问题。 服务访问地址:https://wuxinke.demo.com 访问某个页面的地址:https://wuxinke.demo.com/aps/judgeProviderOrCtenant.ht 经SpringMVC重定向之后,地址变…...

iOS 分别对一张图的局部进行磨砂,拼接起来不能贴合
效果图 需求,由于视图层级的原因,需要对图片分开进行磨砂, 然后组合在一起 如图,上下两部分,上下两个UIImageVIew大小相同,都是和图片同样的大小,只是上面的UIimageVIew 只展示上半部份 &#…...

与面试官互动:建立积极的技术讨论氛围
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...

计算机竞赛 基于YOLO实现的口罩佩戴检测 - python opemcv 深度学习
文章目录 0 前言1 课题介绍2 算法原理2.1 算法简介2.2 网络架构 3 关键代码4 数据集4.1 安装4.2 打开4.3 选择yolo标注格式4.4 打标签4.5 保存 5 训练6 实现效果6.1 pyqt实现简单GUI6.3 视频识别效果6.4 摄像头实时识别 7 最后 0 前言 🔥 优质竞赛项目系列…...

完美解决Ubuntu网络故障,连接异常,IP地址一直显示127.0.0.1
终端输入ifconfig显示虚拟机IP地址为127.0.0.1,具体输出内容如下: wxyubuntu:~$ ifconfig lo: flags73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen …...

手机无人直播软件有哪些,又有哪些优势?
如今,随着智能手机的普及和移动互联网的发展,手机无人直播成为了一个炙手可热的领域。手机无人直播软件为用户提供了便捷、灵活的直播方式,让更多商家人能够实现自己的直播带货的梦想。接下来,我们将探讨手机无人直播软件有哪些&a…...

解密算法与数据结构面试:程序员如何应对挑战
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...

分布式事务7种(秒懂-2PC、3PC、TCC、Saga、本地事务表、MQ事务消息、最大努力通)
参考文章: 七种常见分布式事务详解(2PC、3PC、TCC、Saga、本地事务表、MQ事务消息、最大努力通知)_张维鹏的博客-CSDN博客 分布式事务 (秒懂)_40岁资深老架构师尼恩的博客-CSDN博客 分布式事务:在分布式…...

基于Java+SpringBoot+Vue前后端分离美食推荐商城设计和实现
博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…...

最新ChatGPT程序源码+AI系统+详细图文搭建教程/支持GPT4/AI绘画/H5端/完整Prompt知识库
一、AI系统 如何搭建部署人工智能源码、AI创作系统、ChatGPT系统呢?小编这里写一个详细图文教程吧!SparkAi使用Nestjs和Vue3框架技术,持续集成AI能力到AIGC系统! 1.1 程序核心功能 程序已支持ChatGPT3.5/GPT-4提问、AI绘画、Mi…...

本地启动若依微服务版本
前置工作: 1.导入sql文件 2.安装完nacos 3.安装完redis 启动步骤: 1.开启nacos,在bin目录下 startup.cmd -m standalone 注意:在这之前要配置nacos持久化,修改conf/application.properties文件,增加支持…...

HTML的span标签的作用是什么?答:对文本内容进行精细的样式化和标记。
当谈到HTML中的<span>标签时,它是一个非常基本且灵活的内联元素。它通常用于在文本中应用样式、添加额外的语义或将特定部分标记为一个单独的区域。<span>标签本身并不会给其中的内容带来任何视觉上的变化,但它可以与CSS一起使用,…...