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子

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

暂无评论

发表评论

相关推荐

基于STM32的指纹密码锁

设计简介: 本设计是基于单片机的指纹密码锁,主要实现以下功能: 矩阵按键输入密码,并通过按键显示*号可通过按键或手机开门密码可通过按键进行开门可通过蓝牙模块连接手机进行开门可通过指纹进

STM32串口发送接收数据

1.串口通信 我用的32是stm32f10x最小系统没有UART4和UART5 USART : 通用同步异步收发器 UART : 通用异步收发器 nRTS : 请求发送 nCTS : 请求接收 区别:USART指单片机的一个IO端

TCRT5000循迹模块原理及应用

前言 本文将讲述TCRT5000循迹模块的原理及应用。本文应用于STM32,对于使用循迹模块的你有一定的帮助。 以下是本篇文章的正文内容 一、TCRT5000循迹模块介绍 TCRT5000就是一个红外发射和接收器&#xff0