1、STM32的所有GPIO都可以用作外部中断源的输入端,用来捕捉外部信号,可以配置为下降沿中断、上升沿中断和上升下降沿中断三种模式。
2、Cortex内核具有很强大的异常响应系统,它把能够打断当前代码执行流程的时间分为异常(exception)和中断(interrupt),并把它们用一个表管理起来,编号0~15的称为内核异常,而16以上的则称为外部中断。这个表就称为中断向量表。
3、NVIC是属于Cortex内核的器件,不可屏蔽中断(NMI)和外部中断都由它来处理,而SYSTICK不是由NVIC来控制的。
4、STM32的中断向量具有两个属性,一个为抢占属性,另一个为响应属性,其属性编号越小,表明它的优先级别越高。
抢占,是指打断其他中断的属性,即因为具有这个属性会出现嵌套中断(在执行中断服务函数A的过程中被中断B打断,执行完中断函数B再继续执行中断服务函数A),抢占属性由NVIC_IRQChannelPreemptionPriority的参数配置。
而响应属性则应用在抢占属性相同的情况下,当两个中断向量的抢占优先级相同时,如果两个中断同时到达,则先处理响应优先级高的中断,响应属性由NVIC_IRQChannelSubPriority参数配置。
5、NVIC只能配置16种中断向量,如果工程中超过16个中断怎么办?
注意NVIC能配置的是16种中断向量,而不是16个,当工程中有超过16个中断向量时,必然有两个月以上的中断向量是会用相同的中断种类,而具有相同中断种类的中断向量不能互相嵌套。
6、AFIO时钟
当把GPIO用作EXIT外部中断或使用重映射功能的时候,必须开启AFIO时钟,而在使用默认复用功能的时候,就不必开启AFIO时钟。
7、中断服务函数名是不是可以自己定义?
不可以,中断服务函数的名字必须要与启动文件startup_stm32f10x_hd.s中的中断向量表定义一致。
8、中断函数名有两种命名方法:
①
EXTI0_IRQHandler ;EXTI Line0
EXTI1_IRQHandler ;EXTI Line1
EXTI2_IRQHandler ;EXTI Line2
EXTI3_IRQHandler ;EXTI Line3
EXTI4_IRQHandler ;EXTI Line4
②
EXTI9_5_IRQHandler ;EXTI Line 9..5
EXTI5_10_IRQHandler ;EXTI Line 15..10
中断线在5之后的就不能像0~4那样只有单独一个函数名,都必须写成EXTI9_5_IRQHandler和EXTI15_10_IRQHandler。假如写成EXTI5_IRQHandler、EXTI6_IRQHandler、……、EXTI15_IRQHandler编译器是不会报错的,不过中断服务程序不能工作。所以如果不知道这样的区别,会浪费很多时间来查找错误。
关键字:STM32 中断和异常
引用地址:
STM32之中断和异常
推荐阅读最新更新时间:2024-03-16 16:19
初学stm32-外部中断(EXTI按键中断)
外部中断概述 STM32F4的每个IO都可以作为外部中断输入。 STM32F4的中断控制器支持23个外部中断/事件请求: EXTI线0~15:对应外部IO口的输入中断。 EXTI线16:连接到PVD输出。 EXTI线17:连接到RTC闹钟事件。 EXTI线18:连接到USB OTG FS唤醒事件。 EXTI线19:连接到以太网唤醒事件。 EXTI线20:连接到USB OTG HS(在FS中配置)唤醒事件。 EXTI线21:连接到RTC入侵和时间戳事件。 EXTI线22:连接到RTC唤醒事件。 对于每个外部中断线可以独立的配置触发方式(上升沿,下降沿或者双边沿触发),触发/屏蔽,专用的状态位。 STM32F4供IO使用的
[单片机]
使用STM32调试FMSDR模块及解调FM电台(3)
3. 调试8027使其发出单音FM信号 3.1 输出24Mhz和验证I2C接口 1. 硬件连接 将FM_SDR板卡和STM32H750开发板连接。 本文中所有例子中我们都仅给MSI001使用天线,因为QN8027离得很近,发射端不需要使用天线 本程序中操作的管脚如下描述: 2. PWM输出24MHz QN8027芯片需要输入24MHz的时钟作为参考信号,在这里通过STM32H750的TIMER2产生24M的方波,提供给QN8027作为输入参考信号。 PWM信号的关键参数是频率和占空比,我们分别看一下如何设定TIM2来确定输出PWM的频率和占空比: PWM的输出频率=计数器计数频率/(计数器的计数上限+1),计数器计数频
[单片机]
ST中国峰会:2017年STM32 MCU出货超10亿颗,中国市场贡献巨大
4月28日消息 毫无疑问,物联网时代已经到来!而且数据表明,意法半导体已经成为其中受益者之一。 4月25日至26日,意法半导体(以下简称ST)在深圳召开第三届“STM32中国峰会”。本次峰会主题是“无线连接与云接入”。今天讨论的主要话题包括传感与数据处理、安全、智慧工业等。包括微软、阿里云、机智云等众多合作伙伴带来的与ST 合作方案。 会议具体安排上,4月25日为意法半导体高层主旨演讲及STM32生态系统伙伴针对传感与数据处理、无线连接与云接入、安全与智能工业三大分论坛;4月26日将首次推出盛大的STM32粉丝狂欢节线下大派对,使与会者可以参加研讨会,观摩ST及合作伙伴的最新技术及展品。 在第一天会议演讲上,ST高管演讲分
[半导体设计/制造]
基于STM32和CPLD的等精度测频设计
在电子工程、资源勘探、仪器仪表等相关应用中,频率测量是电子测量技术中最基本最常见的测量之一,频率计也是工程技术人员必不可少的测量工具。但是,传统的频率测量方法在实际应用中有较大的局限性,基于传统测频原理的频率计的测量精度将随被测信号频率的变化而变化,传统的直接测频法其测量精度将随被测信号频率的降低而降低,测周法的测量精度将随被测信号频率的升高而降低。本文中提出一种基于ARM与CPLD宽频带的数字频率计的设计,以微控器STM32作为核心控制芯片,利用CPLD可编程逻辑器件,实现闸门测量技术的等精度测频。 本设计的技术指标: 测频范围:1Hz~200MHz,分辨率为0.1Hz,测频相对误差百万分之一。 周期测量:信号测量范围
[工业控制]
stm32---ADXL345
ADXL345是一款三轴加速度传感器,广泛用于手机、游戏手柄等设计。 ADXL 支持标准的 I2C 或 SPI 数字接口,自带 32 级 FIFO 存储,并且内 部有多种运动状态检测和灵活的中断方式等特性,常用I2C接口 检测轴 初始化步骤 1)上电 2)等待 1.1ms 3)初始化命令序列 4)结束 其中上电这个动作发生在开发板第一次上电的时候,在上电之后,等待 1.1ms 左右,就可以开始发送初始化序列了,初始化序列一结束, ADXL345 就 开始正常工作了 stm里的硬件电路 adxl345.c #include adxl345.h #include iic.h #include math.h #
[单片机]
STM32笔记(十三)---ADC
一、ADC简介 以STM32f103 系列为例,3 个 ADC,精度为 12 位,每个 ADC 最多有 16 个外部通道。其中ADC1 和 ADC2 都有 16 个外部通道, ADC3 根据 CPU 引脚的不同通道数也不同,一般都有8 个外部通道。 ADC 的模式非常多,功能非常强大,具体的我们在功能框图中分析每个部分的功能。 ADC功能框图 图1 单个ADC功能框图 ①电压输入范围 ADC 输入范围为: VREF- ≤ VIN ≤ VREF+。由 VREF-、 VREF+ 、 VDDA 、 VSSA、这四个外部引脚决定。 在设计原理图的时候一般把 VSSA 和 VREF-接地,把 VREF+和 VDDA 接 3V3,
[单片机]
在Mac OS X 系统下做STM32开发
前言 本文只是一个提纲,提供一个参考,具体操作请查看文中的链接。 搭建环境 初学STM32开发,首先解决开发环境的问题,由于Mac OS X系统下没有keil环境,故需要自己搭建开发环境,参考大师“胡茂晓 的 BLOG”:在Mac OS X中搭建STM32开发环境(1)等系列。 编译 环境搭好了,然后就是编译,keil下编译就比较简单了,但是Mac OS X就只能自己写makefile来使用make编译了,当然,还可以使用autoconfigure来实现makefile文件,但autoconfigure同样难以入手。 写makefile,当然要了解makefile的基本知识,建议抽时间阅读“GNU make中文手册”。
[单片机]
STM32学习日志——DAC实验
一、DAC简介 今天学习的是DAC,即数模转换,大容量的STM32F103具有内部DAC模块,STM32F103ZET6属于大容量芯片,具有2个DAC,每个DAC对应一个输出通道,可以设置为8位或12位,选择12位模式时,数据存储可设置为左对齐或右对齐,双DAC通道可以独立转换,也可以同步转换。数据data与输出电压的关系为 V=data*3.3/4096; VDDA和VSSA为DAC模块的供电,Vref+为参考电压。通道1为PA4,通道2为PA5;本次的实验是,通过按键给DAC模块一个值,然后将PA4与PA1(ADC通道1)连接起来,就可以通过读取ADC1的通道1的电压来确定PA4的输出电压。 二、配置库函数 1)开启PA口时钟
[单片机]