EXTI外部中断

? 难点:中断向量表、看门狗、NVIC的优先级位?EXTI框图?

------------------------

中断系统

中断:在主程序运行过程中,出现了特定的中断触发条件(中断源--->例如:对于外部中断,引脚发生电平跳变; 对定时器来说,定时时间到了 ;对串口通信来说,接收到了数据

使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行

中断优先级(自己设置):当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓急进行裁决,优先响应更加紧急的中断源

中断嵌套:当一个中断程序正在运行时,又有新的更高优先级的中断源申请中断,CPU再次暂停当前中断程序,转而去处理新的中断程序,处理完成后依次进行返回

中断执行流程

STM32中断

68个可屏蔽中断通道(中断源),包含EXTI、TIM、ADC、USART、SPI、I2C、RTC等多个外设

使用NVIC统一管理中断,每个中断通道都拥有16个可编程的优先等级,可对优先级进行分组,进一步设置抢占优先级和响应优先级

      灰色的是内核中断,了解即可

WWDG 窗口看门狗,用来监测程序运行状态的中断。比如程序卡死了,没有及时喂狗,就会申请中断

PVD电源电压监测:如果供电电压不足,申请中断

补充: 中断向量表(中断地址的列表)

 程序中的中断函数,地址是由编译器来分配的,是不固定的。

 但是中断跳转,由于硬件限制,只能跳转到固定的地址执行程序。

 所以为了让硬件跳转到不固定的中断函数里,就要在内存中定义一个地址的列表。

 这个列表地址是固定的,中断发生后,就跳到这个固定位置,然后在这个固定位置,由编译器,再加上一条跳转到中断函数的代码,这样中断跳转就可以跳到任意位置了

本次课程使用 EXT10-EXT-14   EXTI9-5   EXTI15-10

NVIC(嵌套中断向量控制器)基本结构

NVIC是一个内核外设,CPU小助手,处理中断先后顺序

NVIC中断优先级分组(医生看病)

NVIC的中断优先级(16个)由优先级寄存器的4位二进制(0~15 值越小,优先级越高)决定,这4位可以进行切分,分为高n位(2^n)的抢占优先级和低4-n位(2^4-n)的响应优先级

抢占优先级高的可以中断嵌套(打断现在的中断,不让现在的病人看完,直接看病,先给自己看),响应优先级高的可以优先排队(不打断现在的中断,只是插队看病,等这个病人看完自己再看),抢占优先级和响应优先级均相同的按中断号(数值小优先响应)排队

stm32的中断不存在先来后到的排队方式,任何时候都是优先级高的先相应

EXTI简介

*EXTI(Extern Interrupt)外部中断

*EXTI可以监测指定GPIO口的电平信号,当其指定的GPIO口产生电平变化时,EXTI将立即向NVIC发出中断申请,经过NVIC裁决后即可中断CPU主程序,使CPU执行EXTI对应的中断程序

简单来说,引脚电平变化,申请中断

*支持的触发方式:上升沿/下降沿/双边沿/软件触发

*支持的GPIO口:所有GPIO口,但相同的Pin号不能同时触发中断(PA1和PB1不能同时用)

*通道数:16个GPIO_Pin,外加PVD输出、RTC闹钟、USB唤醒、以太网唤醒

*触发响应方式:

        中断响应(正常流程)

        事件响应(当外部中断检测到引脚变化时,信号就不会通向CPU,而是通到其他外设,用来触发其他外设的操作(ADC,DMA)属于外设之间联合工作)

EXTI基本结构

外部中断配置流程

1.配置RCC

2.GPIO配置输入模式

3.AFIO 选择需要用的GPIO

4.EXTI 选择边沿触发方式、触发响应方式

5.NVIC优先级配置

AFIO复用IO口

AFIO主要用于引脚复用功能的选择和重定义

在STM32中,AFIO主要完成两个任务:复用功能引脚重映射、中断引脚选择

EXTI框图

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python一级考试笔记

Python一级考试笔记【源源老师】 前置知识:(了解即可) Python常见的几种编程环境:IDLE(自带)、Visual Studio Code、Jupyter、pyCharm; python版本:python3 和 python2(…

最适合初学者的Python入门详细攻略,一文讲清,赶紧收藏!

前言 目前python可以说是一门非常火爆的编程语言,应用范围也非常的广泛,工资也挺高,未来发展也极好。 Python究竟应该怎么学呢,我自己最初也是从零基础开始学习Python的,给大家分享Python的学习思路和方法。一味的买…

OpenAI Sora 初体验

OpenAI Sora 初体验 就在刚刚,OpenAI 再次投下一枚重磅炸弹——Sora,一个文本到视频生成模型。 我第一时间体验了 Sora。看过 Sora 的能力后,我真的印象深刻。对细节的关注、无缝的角色刻画以及生成视频的绝对质量真正将可能性提升到了一个新…

电路设计(15)——篮球赛24秒违例倒计时报警器的proteus仿真

1.设计要求 设计、制作一个篮球赛24秒违例倒计时报警器。要求: (1)具有倒计时功能。可完整实现从“24”秒开始依序倒计时并显示倒计时过程,显示时间间隔为1秒。 (2)具有消隐功能。当“24”秒倒计时…

云计算基础-云计算概念

云计算定义 云计算是一种基于互联网的计算方式,通过这种计算方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。云计算依赖资源共享以达成规模经济,类似基础设置(如电力网)。 云计算最基本的概念就是云加端,我们有一个…

网络原理(HTTP篇)

网络原理HTTP 前言HTTPHTTP的工作流程抓包工具抓取HTTP报文HTTP报文格式 请求报文具体细节首行URLURL的基本格式URL encode 方法 报头(header)HostContent-Length 和 Content-TypeUser-Agent(UA)RefererCookie(重要) 前言 如图&a…

【Linux】 Linux 小项目—— 进度条

进度条 基础知识1 \r && \n2 行缓冲区3 函数介绍 进度条实现版本 1代码实现运行效果 版本2 Thanks♪(・ω・)ノ谢谢阅读!!!下一篇文章见!!! 基础知识 1 \r &&a…

MessageQueue --- RabbitMQ

MessageQueue --- RabbitMQ RabbitMQ IntroRabbitMQ 核心概念RabbitMQ 分发类型Dead letter (死信)保证消息的可靠传递 RabbitMQ Intro 2007年发布,是一个在AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,…

社区养老|社区养老服务系统|基于springboot社区养老服务系统设计与实现(源码+数据库+文档)

社区养老服务系统目录 目录 基于springboot社区养老服务系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员部分功能 (1) 用户管理 (2)服务种类管理 (3)社区服务管理 &#xff08…

数据恢复软件哪个好?排名前十的数据恢复软件清单!

数据已经成为我们生活中不可或缺的一部分。从珍贵的家庭照片到重要的商业文件,我们在智能手机、笔记本电脑和 PC 等设备上以各种形式存储数据。但是,由于硬件故障、软件损坏、意外删除或病毒攻击等各种原因,可能会发生数据丢失。这些情况可能…

大模型计算量纲

大模型计算量纲 1. 模型参数量(llama 13B为例) {"architectures": ["LLaMAForCausalLM"],"bos_token_id": 0,"eos_token_id": 1,"hidden_act": "silu","hidden_size": 5120,"intermediate_size&…

随机过程及应用学习笔记(一)概率论(概要)

概率是随机的基础,在【概率论(概要)】这个部分中仅记录学习随机过程及应用的基本定义和结果。 前言 首先,概率论研究的基础是概率空间。概率空间由一个样本空间和一个概率测度组成,样本空间包含了所有可能的结果&…

【探索Linux】—— 强大的命令行工具 P.22(POSIX信号量)

阅读导航 引言一、POSIX信号量的基本概念二、信号量的相关操作1 . 初始化信号量sem_init ( )(1)原型(2)参数(3)返回值(4)示例代码 2 . 等待信号量(1)sem_wait…

Linux第56步_根文件系统第3步_将busybox构建的根文件系统烧录到EMMC

1、第1次将“rootfs”打包 1)、打开第1个终端,准备在“mnt”目录下创建挂载目录“rootfs”; 输入“ls回车” 输入“cd /mnt回车” 输入“ls回车”,查看“mnt”目录下的文件和文件夹 输入“sudo mkdir rootfs回车”,在“mnt”…

如何在30天内使用python制作一个卡牌游戏

如何在30天内使用python制作一个卡牌游戏 第1-5天:规划和设计第6-10天:搭建游戏框架第11-20天:核心游戏机制开发第21-25天:游戏界面和用户体验第26-30天:测试和发布附加建议游戏类型游戏规则设计界面设计技术选型第6-…

Linux操作系统基础(九):Linux用户与权限

文章目录 Linux用户与权限 一、文件权限概述 二、终端命令:组管理 三、终端命令:用户管理 1、创建用户 、 设置密码 、删除用户 2、查看用户信息 3、su切换用户 4、sudo 4.1、给指定用户授予权限 4.2、使用 用户 zhangsan登录, 操作管理员命令…

第五节 zookeeper集群与分布式锁_2

1.分布式锁概述 1.1 什么是分布式锁 1)要介绍分布式锁,首先要提到与分布式锁相对应的是线程锁。 线程锁:主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。 线程锁只在同一J…

【LeetCode: 107. 二叉树的层序遍历 II + BFS】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

微信网页版能够使用(会顶掉微信app的登陆)

一、文件结构 新建目录chrome新建icons,其中图片你自己找吧新建文件manifest.json新建文件wx-rules.json 二、文件内容 对应的png你们自己改下 1、manifest.json {"manifest_version": 3,"name": "wechat-need-web","author…

用HTML、CSS和JS打造绚丽的雪花飘落效果

目录 一、程序代码 二、代码原理 三、运行效果 一、程序代码 <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetGBK"><style>* {margin: 0;padding: 0;}#box {width: 100vw;heig…