江科大/江协科技 STM32学习笔记P9-11
文章目录
- OLED
- 1、OLED硬件
- main.c
- EXTI外部中断
- 1、中断系统
- 2、中断执行流程图
- 3、STM32中断
- 4、中断地址的作用
- 5、EXTI
- 6、EXTI基本结构
- 7、AFIO复用IO口
- 8、EXTI框图
- 或门和与门
- 9、旋转编码器介绍
- 10、硬件电路
OLED
1、OLED硬件
SCL和SDA是I2C的通信引脚,需要接在单片机I2C通信的引脚上,在这里的驱动程序用的是GPIO口模拟的I2C通信,所以这两个端口可以接在任意的GPIO口上。
main.c
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "OLED.h"int main(void)
{/*模块初始化*/OLED_Init(); //OLED初始化/*OLED显示*/OLED_ShowChar(1, 1, 'A'); //1行1列显示字符AOLED_ShowString(1, 3, "HelloWorld!"); //1行3列显示字符串HelloWorld!OLED_ShowNum(2, 1, 12345, 5); //2行1列显示十进制数字12345,长度为5OLED_ShowSignedNum(2, 7, -66, 2); //2行7列显示有符号十进制数字-66,长度为2OLED_ShowHexNum(3, 1, 0xAA55, 4); //3行1列显示十六进制数字0xA5A5,长度为4OLED_ShowBinNum(4, 1, 0xAA55, 16); //4行1列显示二进制数字0xA5A5,长度为16//C语言无法直接写出二进制数字,故需要用十六进制表示while (1){}
}
EXTI外部中断
1、中断系统
2、中断执行流程图
在中断执行前会对程序的现场进行保护,中断执行后还原现场。
右边有中断函数,中断函数不需要我们调用,由硬件自动调用。
3、STM32中断
4、中断地址的作用
程序中的中断函数,它的地址是由编译器来分配的,是不固定的,但是中断跳转由于硬件的限制只能跳转到固定的地址执行程序,为了硬件能跳转到一个不固定的中断函数里,需要在内存中定义一个地址列表,这个列表地址是固定的,中断发生后就跳到这个固定位置,然后在这个固定位置,由编译器再加上一条跳转到中断函数的代码,这样中断跳转就可以跳转到任意位置了。说人话就是中断跳转认的固定地址由编译器担保,编译器对外用固定地址,对内自己再找地址存,类似中断向量表。
NVIC基本结构
在STM32中用来统一分配中断优先级和管理中断,NVIC是一个内核外设。为什么需要NVIC?因为STM32的中断非常多,如果都接到CPU上,CPU需要引出很多线,如果很多中断同时申请,或者中断很多产生了拥堵,难处理,所以需要NVIC。NVIC有很多输入口,只有一个输出口,NVIC根据每个中断的优先级分配中断的先后顺序,之后通过输出口让CPU处理中断。
NVIC优先级分组
类比医生看病,响应优先级高的可以等医生看完这个病人后优先看病,抢占优先级高的直接让正在看病的病人等着自己先看。
当抢占优先级和响应优先级均相同时,按上上图中表中的优先级顺序数字来排队,数字小的优先排队
5、EXTI
引脚电平变化,申请中断,上升沿,电平从低到高触发中断,下降沿,高到低触发中断,软件触发是引脚不变程序里的代码触发中断。
相同的Pin不能同时触发中断的意思是PA1、PB1、PC1这样的只能选1个作为中断引脚,所以如果有多个中断引脚,要选不同Pin的引脚,比如PA6和PA7、PA9和PB15这样的。
16个GPIO_Pin是外部中断的主要功能,后面四个是来外部中断“蹭网”的,为什么呢?因为外部中断有从低功耗模式的停止模式下唤醒STM32的功能,对于PVD电源电压监测,当电源从电压过低恢复时,需要PVD借助一下外部中断退出停止模式,对于RTC闹钟来说,有时为了省电,定一个闹钟后STM32进入停止模式,等到闹钟响的时候再唤醒,也需要借助外部中断。
中断响应:申请中断,让CPU执行中断函数。事件响应:当外部中断检测到引脚电平变化时,正常的流程是选择触发中断,但在STM32中也可以选择触发一个事件,如果触发事件那外部中断的信号就不通向CPU了,而是通向其他外设,用来触发其他外设的操作,比如触发ADC转化、触发DMA等。
6、EXTI基本结构
每个GPIO外设都有16个引脚,在AFIO中进行选择后接到EXTI边缘检测及控制电路,与下面4个蹭网的一起,经过EXTI电路后分为了两种输出,上面一直到ETH都是接NVIC用来触发中断,注意外部中断的9-5和15-10分到一个通道里,减少通道资源占用,也就是9-5触发同一个中断函数,编程时,在这个两个中断函数中需要再根据标志位来区分到底是哪个中断进来的。下面的20条输出线接到其他外设进行事件响应。
7、AFIO复用IO口
PA0、PB0…通过数据选择器接到EXTI0,这就清楚了为什么相同的Pin不能同时触发中断。
8、EXTI框图
输入线进入边沿检测电路,在上面的上升沿寄存器和下降沿寄存器选择触发方式,接着触发信号进入或门的输入端,通过或门后触发信号兵分两路,上面触发中断,下面触发事件。触发中断首先会置一个挂起寄存器,相当于中断标志位,读该寄存器可判断出是哪个通道触发的中断,如果寄存器置1就会继续向左走,和中断屏蔽寄存器共同进入一个与门,然后进NVIC中断控制器,这里的与门是开关的作用,只有中断屏蔽寄存器给1时才有可能让触发信号继续走。再看下面的触发事件的输出部分,首先是一个事件屏蔽寄存器进行开关控制,最后通过一个脉冲发生器到其他外设,脉冲发生器的作用是给一个电平脉冲,用来触发其他外设的动作。
或门和与门
或门一个为1则为1,与门一个为0就是0。
9、旋转编码器介绍
转动旋转编码器产生脉冲波形,信号突发,STM32不知道什么时候产生,同时是外部驱动,STM32只能被动读取,最后这个信号非常快,STM32稍晚一点读取就会错过很多波形。对于这种情况,考虑外部中断。
按键虽然也是外部驱动的突发事件,但外部中断不好处理按键抖动和松手检测的问题,对于按键来说,它的输出波形也不是转瞬即逝的,要求不高可以在主程序中循环读取,或定时器中断读取。
内部用金属触点进行通断,是一种机械触点式编码器,内侧的左右触电都接中间的C引脚,外侧的触电左接A引脚,右接B引脚,中间的圆的金属片是一个按键,可以按下,上面两根线引出。
右边是编码盘,是一系列金属触点,在旋转时依次通断两边的触点,还需注意金属盘的位置是经过设计的,能让两侧触点的通断产生一个90度的相位差,最终配合一下外部电路,两个输出AB就会输出如下,当正转时左边A相引脚输出一个方波信号,同时右边的B相引脚输出一个和它相位相差90度的波形,这种相位相差90度的波形叫正交波形,可以测方向,这就是单相输出和两相正交输出的区别。
我们用到的这种触点接触形式的旋转编码器适合调节音量但不适合测电机,另外几种非接触的形式可以用于电机测速。
10、硬件电路
编码器内部两个触点在旋转轴旋转时以相位相差90度的方式交替导通,需要配合外围电路输出高低电平,左图左下接10K的上拉电阻,默认不旋转时上拉为高电平,通过R3输出到A端口的也为高电平。当触电导通时,接到GND,低电平。R3是输出限流电阻,防止模块引脚电流过大,C1是输出滤波电容,可以防止输出信号抖动。
右边AC接两个引脚,C暂时不用。
相关文章:

江科大/江协科技 STM32学习笔记P9-11
文章目录 OLED1、OLED硬件main.c EXTI外部中断1、中断系统2、中断执行流程图3、STM32中断4、中断地址的作用5、EXTI6、EXTI基本结构7、AFIO复用IO口8、EXTI框图或门和与门 9、旋转编码器介绍10、硬件电路 OLED 1、OLED硬件 SCL和SDA是I2C的通信引脚,需要接在单片机…...

【培训通知】成为Power BI数据分析可视化实战第一人,加入3天直播即可
Power BI数据分析可视化实战课程培训是一门旨在提升学员在数据分析与可视化领域能力的专业课程。以下是对该培训课程的详细介绍: 一、课程概述 Power BI 是一种业务分析服务,能够提供深入的见解,帮助用户实现快速、明智的决策。该课程通过实…...

24暑假算法刷题 | Day22 | LeetCode 77. 组合,216. 组合总和 III,17. 电话号码的字母组合
目录 77. 组合题目描述题解 216. 组合总和 III题目描述题解 17. 电话号码的字母组合题目描述题解 77. 组合 点此跳转题目链接 题目描述 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输…...

一篇文章告诉你对讲机为什么不能被手机取代的7个原因
在智能时代,手机几乎无处不在,涵盖了从基本通信到多媒体娱乐的一切功能。然而,即使在这种情况下,对讲机仍然没有被完全取代。这不仅仅是出于怀旧或专业需求,还有许多实质性的原因使得对讲机在特定领域和情况下仍然保持…...
LION论文阅读
一、论文主要出发点 3D目标检测的性能受限于3D卷积的局部感受野。 Transformer在3D检测领域效果很好,但由于算力限制,已有的工作在pillar内,或将voxel分组在组内进行特征交互,阻碍了他们捕捉更远程的依赖关系。 线性RNN算子的计…...

在Android上实现汉字笔顺动画效果——HanZiWriter
序,万般皆是命,半点不由人。 Hanzi Writer 是 javascript 免费开源库,根据汉字书写时按照笔画顺序的特征,可以播放正确笔画顺序的描边动画和练习测试。支持简体字和繁体字。可以让全球用户能够通过手绘模仿的方式来学习和练习书写…...

黑马头条vue2.0项目实战(一)——项目初始化
1. 图标素材(iconfont简介) 制作字体图标的工具有很多,推荐使用:iconfont-阿里巴巴矢量图标库。 注册账户 创建项目 可以根据项目自定义 class 前缀 上传图标到项目 生成链接,复制 css 代码,在项目中使用…...
Unity Shader动画:用代码绘制动态视觉效果
在Unity中,Shader是运行在GPU上的小程序,用于控制顶点和像素的渲染过程。通过编写自定义Shader,开发者可以创造出各种令人惊叹的动画效果,从简单的颜色变化到复杂的流体模拟。本文将探讨如何使用Unity Shader来实现动画效果。 Sh…...

智税集成2.0生成凭证
:::info 💡 整体业务流程 从A9服务器中取数,生成列表数据,写入到对方oracle数据库中。 ::: 项目关键点 1.连接数据库 左连接连接本地SQLserver数据库、右连接要链接A9开票服务器的数据库然后设想用SQLserver 自带的外部连接来连接oracle数据…...
B4005 [GESP202406 四级] 黑白方块 【暴力枚举】【前缀和】
#include<bits/stdc.h> using namespace std; int n,m,ans,tmp; char mp[20][20]; int cheak(int a,int b,int c,int d){//a<c b<dint cnt0;//枚举矩阵中的每个点 for(int ia;i<c;i)for(int jb;j<d;j)if(mp[i][j]1) cnt;//统计黑格的个数 return 2*cnt(c-a1…...

深度学习趋同性的量化探索:以多模态学习与联合嵌入为例
深度学习趋同性的量化探索:以多模态学习与联合嵌入为例 参考文献 据说是2024年最好的人工智能论文,是否有划时代的意义? [2405.07987] The Platonic Representation Hypothesis (arxiv.org) arxiv.org/abs/2405.07987 趋同性的量化表达 …...
决策树与随机森林:比较与应用场景分析
决策树与随机森林:比较与应用场景分析 引言 决策树和随机森林是机器学习中广泛使用的两种算法,因其简单性和强大的功能而被广泛采用。决策树是一种树形结构的决策模型,易于理解和解释。随机森林则是通过集成多棵决策树来提高预测性能的模型…...
C#用Aspose.Cells导出Excel,.NET导出Excel
ASP.NET MVC 控制器里面Action处理,下载文件,输出文件流 public async Task<ActionResult> ExportNewsAuthorFee(string deptId, DateTime? startDate, DateTime? endDate){if (startDate null){startDate DateTime.Parse(DateTime.Now.Year …...

天猫番茄品类TOP1,复购率超40%,「一颗大」如何策划极致产品力?
桔子要买什么品牌?桃子买什么品牌?土豆买什么品牌?过去人们购买农产品几乎没有品牌意识。但近年来可能某些人买猕猴桃时会考虑佳沛,这是一个在全球达到30%猕猴桃市场的新西兰品牌。与此类似,一个国产品牌「一颗大™」正…...

Docker搭建私有仓库harbor(docker 镜像仓库搭建)
Harbor介绍 Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目…...

面试题:MySQL 索引
1. 谈一下你对于MySQL索引的理解?(为什么MySQL要选择B+树来存储索引) MySQL的索引选择B+树作为数据结构来进行存储,使用B+树的本质原因在于可以减少IO次数,提高查询的效率,简单来说就是可以保证在树的高度不变的情况下存储更多的数据: IO效率的提高:在MySQL数据库中,…...
云计算day13
一、Git 概述 Git 是一种分布式版本控制系统,用于跟踪和管理代码的变更。它是由 Linus Torvalds 创建的,最初被设计用于 Linux 内核的开发。Git 允许开发 人员跟踪和管理代码的版本,并且可以在不同的开发人员之间进行协作。 Github 用的就…...

2024年孝感中级职称报名开始了吗?
2024年孝感中级职称申报终于开始了,之前参加过水测的小伙伴们,开始准备评审了 2024年孝感本批次申报时间:中级、初级职称网上申报时间:2024年8月1日至8月31日。 注意:个人通过“湖北省职称评审管理信息系统”申报,须先…...

RAG技术之Router
Router有什么用? 在RAG应用中,Router可以帮助我们基于用户的查询意图来决定使用何种数据类型或数据源,比如是否需要进行语义检索、是否需要进行text2sql查询,是否需要用function call来进行API调用。 Router也可以根据用户的查询…...
linux系统通过修改sudo文件使普通用户拥有类似root用户权限
说明:普通用户要想拥有root权限,如果不在sudo文件里配置就算把该用户加到wheel组(root用户所在的组)也不行。 要想通过在命令前加上sudo使得该用户以root权限执行命令,需要修改/etc/sudoers文件。 (如果通…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...

MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...

如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...

优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...