stm32 EXIT外部中断及代码应用

先来了解一些基本概念

RCC外设,即复位和时钟控制的英文缩写,负责芯片的复位和时钟控制。

复位方式:

系统复位:系统复位将复位除时钟控制寄存器CSR中的复位标志和备份区域中的寄存器以外的所有寄存器为它们的复位数值。

电源复位:电源复位将复位除了备份区域外的所有寄存器。

后备域复位:备份区域拥有两个专门的复位,它们只影响备份区域。

当以下事件中的一件发生时,产生一个系统复位:

1. NRST引脚上的低电平(外部复位)
2.窗口看门狗计数终止(WDG复位)                                                                                                   3.独立看门狗计数终止(IWDG复位)                                                                                                  4.软件复位(SW复位)
5.低功耗管理复位

例,如图所示当按键按下时启动系统复位 

时钟:

时钟可以简单地理解为“心跳”,通常说的72Mhz,480Mhz就是stm32芯片的主时钟频率,芯片依据这些频率来达到各种器件同步的工作

三种不同的时钟源可被用来驱动系统时钟(SYSCLK):
-HSI振荡器时钟(高速内部时钟)                                                                                                        --HSE振荡器时钟(高速外部时钟)                                                                                                        -PLL时钟(锁相环倍频时钟,可认为是由其他时钟发展而来)
频率越高,器件性能及工作速度也越快,相应的功耗也会增大,要根据芯片运行的工作条件来选择频率。

  
中断:

中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。ARM Cortex M3内核支持256个中断,包括16个内核中断和240个外设中断,拥有256个中断优先级别。
 

中断的优先级:

中断的优先级分别两种:可编程、不可编程。
对于STM32的中断优先级,决定着内核优先相应谁的中断请求。
小值优先原则,中断优先级数值越小,中断会被优先响应。
中断优先级按照优先级分组配置。

 如图所示,Reset、NMI及硬件失效中断的优先级是固定的不能改变,而‘存储管理’优先级是可以改变的

中断的优先级分组

以F103为例,STM32上只使用了M3内核支持的8bit优先级中的高4位bit。也就是说STM32支持2^4个优先级。在F103上,使用这个4个bit,组织成五组优先级分组。这五组中,每组分为l个抢占组、1个子优先级组。组织形式如下。 

 通过优先级分组,可以管理中断的响应顺序。
只有抢占优先级才有抢占中断权限,发生中断嵌套。
那按怎样的顺序发生中断呢?                                                                                                            抢占优先级高的先执行,如果中断抢占优先级相同,不发生抢占行为。
如果多个挂起的中断具有相同的抢占优先级,则子优先级高的先行(数值越小优先级越高),如果子优先级相同,则IRQ编号小的先行。可编程的优先级,通过嵌套向量中断控制器(NVIC)实现。     其中,IRQ编号可在芯片对应头文件里找到。

总的来说就是:抢占优先级>子优先级>IRQ编号

EXTI--扩展中断和事件控制器

STM32上有许多外设,是通过内部信号来协同工作的,这个信号可理解为事件,比如定时器定时完成的“计数完成事件”。根据寄存器中是否可以查到事件的标志将事件分为可见和不可见,一般通过中断来捕获事件

EXTI是STM32上的一个外设。它可以捕获外部输入线电平变化等等的一些事件。EXTI捕获到了事件后,还可以生成相应的EXTI中断及等等的一些中断。
所以EXTI外设可以大致概括为两个功能:                                                                                            -捕获外部输入等事件。
-生成EXTI中断等中断请求。
EXTI外设框图

 线路①,当有外部输入时唤醒MCU,如按手机开关键屏幕亮起;                                                     线路②,当有中断请求而且没有被屏蔽的情况下产生中断。

EXTI主要特性如下:

每个中断/事件都有独立的触发和屏蔽                                                                                                每个中断线都有专用的状态位
支持多达20个软件的中断/事件请求
检测脉冲宽度低于APB2时钟宽度的外部信号。

外部中断/事件线路映像

112通用IO端口以下图的方式连接到16个外部中断/事件线上:

基于STM32CubeMX的外部中断设计步骤:
【1】在STM32CubeMX中指定引脚,配置中断初始化参数。                                                            【2】重写该IO引脚对应的中断回调函数。

例:简单实现按下按键3即PC2为外部中断输入,实现LED3反转电平,按下按键4即PC3为外部中断输入,实现LED4反转电平。

 Cube MX的配置如下

 

 

 

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	if(GPIO_Pin==GPIO_PIN_2)//按键3触发中断
	{
		LED3_TOG;//电平反转(定义的宏定义)
	}
		if(GPIO_Pin==GPIO_PIN_3)//按键4触发中断
	{
		LED4_TOG;//电平反转
	}
}

参考代码:

链接:https://pan.baidu.com/s/1r3j_jL4I6KkO5-Ek4VhMmw 
提取码:ox4d

 

版权声明:本文为CSDN博主「柚you子」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/nbdegaochunxue/article/details/122668423

先来了解一些基本概念

RCC外设,即复位和时钟控制的英文缩写,负责芯片的复位和时钟控制。

复位方式:

系统复位:系统复位将复位除时钟控制寄存器CSR中的复位标志和备份区域中的寄存器以外的所有寄存器为它们的复位数值。

电源复位:电源复位将复位除了备份区域外的所有寄存器。

后备域复位:备份区域拥有两个专门的复位,它们只影响备份区域。

当以下事件中的一件发生时,产生一个系统复位:

1. NRST引脚上的低电平(外部复位)
2.窗口看门狗计数终止(WDG复位)                                                                                                   3.独立看门狗计数终止(IWDG复位)                                                                                                  4.软件复位(SW复位)
5.低功耗管理复位

例,如图所示当按键按下时启动系统复位 

时钟:

时钟可以简单地理解为“心跳”,通常说的72Mhz,480Mhz就是stm32芯片的主时钟频率,芯片依据这些频率来达到各种器件同步的工作

三种不同的时钟源可被用来驱动系统时钟(SYSCLK):
-HSI振荡器时钟(高速内部时钟)                                                                                                        --HSE振荡器时钟(高速外部时钟)                                                                                                        -PLL时钟(锁相环倍频时钟,可认为是由其他时钟发展而来)
频率越高,器件性能及工作速度也越快,相应的功耗也会增大,要根据芯片运行的工作条件来选择频率。

  
中断:

中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。ARM Cortex M3内核支持256个中断,包括16个内核中断和240个外设中断,拥有256个中断优先级别。
 

中断的优先级:

中断的优先级分别两种:可编程、不可编程。
对于STM32的中断优先级,决定着内核优先相应谁的中断请求。
小值优先原则,中断优先级数值越小,中断会被优先响应。
中断优先级按照优先级分组配置。

 如图所示,Reset、NMI及硬件失效中断的优先级是固定的不能改变,而‘存储管理’优先级是可以改变的

中断的优先级分组

以F103为例,STM32上只使用了M3内核支持的8bit优先级中的高4位bit。也就是说STM32支持2^4个优先级。在F103上,使用这个4个bit,组织成五组优先级分组。这五组中,每组分为l个抢占组、1个子优先级组。组织形式如下。 

 通过优先级分组,可以管理中断的响应顺序。
只有抢占优先级才有抢占中断权限,发生中断嵌套。
那按怎样的顺序发生中断呢?                                                                                                            抢占优先级高的先执行,如果中断抢占优先级相同,不发生抢占行为。
如果多个挂起的中断具有相同的抢占优先级,则子优先级高的先行(数值越小优先级越高),如果子优先级相同,则IRQ编号小的先行。可编程的优先级,通过嵌套向量中断控制器(NVIC)实现。     其中,IRQ编号可在芯片对应头文件里找到。

总的来说就是:抢占优先级>子优先级>IRQ编号

EXTI--扩展中断和事件控制器

STM32上有许多外设,是通过内部信号来协同工作的,这个信号可理解为事件,比如定时器定时完成的“计数完成事件”。根据寄存器中是否可以查到事件的标志将事件分为可见和不可见,一般通过中断来捕获事件

EXTI是STM32上的一个外设。它可以捕获外部输入线电平变化等等的一些事件。EXTI捕获到了事件后,还可以生成相应的EXTI中断及等等的一些中断。
所以EXTI外设可以大致概括为两个功能:                                                                                            -捕获外部输入等事件。
-生成EXTI中断等中断请求。
EXTI外设框图

 线路①,当有外部输入时唤醒MCU,如按手机开关键屏幕亮起;                                                     线路②,当有中断请求而且没有被屏蔽的情况下产生中断。

EXTI主要特性如下:

每个中断/事件都有独立的触发和屏蔽                                                                                                每个中断线都有专用的状态位
支持多达20个软件的中断/事件请求
检测脉冲宽度低于APB2时钟宽度的外部信号。

外部中断/事件线路映像

112通用IO端口以下图的方式连接到16个外部中断/事件线上:

基于STM32CubeMX的外部中断设计步骤:
【1】在STM32CubeMX中指定引脚,配置中断初始化参数。                                                            【2】重写该IO引脚对应的中断回调函数。

例:简单实现按下按键3即PC2为外部中断输入,实现LED3反转电平,按下按键4即PC3为外部中断输入,实现LED4反转电平。

 Cube MX的配置如下

 

 

 

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	if(GPIO_Pin==GPIO_PIN_2)//按键3触发中断
	{
		LED3_TOG;//电平反转(定义的宏定义)
	}
		if(GPIO_Pin==GPIO_PIN_3)//按键4触发中断
	{
		LED4_TOG;//电平反转
	}
}

参考代码:

链接:https://pan.baidu.com/s/1r3j_jL4I6KkO5-Ek4VhMmw 
提取码:ox4d

 

版权声明:本文为CSDN博主「柚you子」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/nbdegaochunxue/article/details/122668423

生成海报
点赞 0

柚you子

我还没有学会写个人说明!

暂无评论

相关推荐

在Stm32CubeIDE环境下使用DAP-Link仿真

目录 一、文章背景 二、准备工作 三、调试过程 四、编写脚本自动执行OpenOCD服务 一、文章背景 最近师弟需要调STM32,由于他已经习惯了Eclipse的开发环境,所以给他推荐了Stm32CubeIDE

STM32的12位ADC过采样实现16位分辨率

1.什么是过采样过采样技术是一种以牺牲采样速度来提高ADC分辨率的技术。部分STM32单片机是支持硬件过采样的,如STM32G0系列。通过过采样,可以将12位的ADC提升到16位,非常实用。根据过采样技