欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

STM32定时器与中断整理

程序员文章站 2022-03-13 17:19:05
...

目录

1、系统异常中断

2、外部中断(全部)

3、优先级

5、如何开关中断示例

6、抢断优先级、响应优先级说明

7、定时器说明

7.1基本定时器

7.2高级/通用定时器

7.3定时器拓展补充-主要特性

 

F429 在内核水平上搭载了一个异常响应系统, 支持为数众多的系统异常和外部中断。

其中系统异常有10 个,外部中断有91 个。除了个别异常的优先级被定死外,其它异常的

优先级都是可编程的。有关具体的系统异常和外部中断可在标准库文件stm32f4xx.h 这个头

文件查询到,在IRQn_Type 这个结构体里面包含了F4 系列全部的异常声明。

 

 1、系统异常中断

STM32定时器与中断整理

 

 

2、外部中断(全部)

STM32定时器与中断整理

 

STM32定时器与中断整理

 

STM32定时器与中断整理

 

STM32定时器与中断整理

 

STM32定时器与中断整理

 

STM32定时器与中断整理

 

STM32定时器与中断整理

 

 

3、优先级

如果有多个中断同时响应,抢占优先级高的就会抢占优先级低的优先得到执行,如果抢占优先级相同,就比较子优先级。如果抢占优先级和子优先级都相同的话,就比较他们的硬件中断编号,编号越小,优先级越高。

STM32定时器与中断整理

 

 

5、如何开关中断示例

串口

USART_ITConfig(DEBUG_USART1, USART_IT_RXNE, ENABLE); /* 使能串口接收中断 */USART_ITConfig(DEBUG_USART1, USART_IT_RXNE, DISABLE); /* 关闭串口接收中断 */

定时器

TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE); /* 使能定时器更新中断 */TIM_ITConfig(TIM4, TIM_IT_Update, DISABLE); /* 关闭定时器更新中断 */

DMA

DMA_ITConfig(DEBUG_SPI2_RX_DMA_STREAM,DMA_IT_TC,ENABLE);/* 开启传输完成中断*/DMA_ITConfig(DEBUG_SPI2_RX_DMA_STREAM,DMA_IT_TC, DISABLE);/*关闭传输完成中断*/

EXTI中断线(得重新配置)

SYSCFG_EXTILineConfig(KEY3_INT_EXTI_PORTSOURCE, KEY3_INT_EXTI_PINSOURCE); /* 连接 EXTI 中断源 到key3引脚 */EXTI_InitStructure.EXTI_Line = KEY3_INT_EXTI_LINE; /* 选择 EXTI 中断源 */EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; /* 中断模式 */EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;/* 上升沿触发 */EXTI_InitStructure.EXTI_LineCmd = ENABLE; /* 使能中断/事件线 */EXTI_Init(&EXTI_InitStructure);SYSCFG_EXTILineConfig(KEY3_INT_EXTI_PORTSOURCE, KEY3_INT_EXTI_PINSOURCE); /* 连接 EXTI 中断源 到key3引脚 */EXTI_InitStructure.EXTI_Line = KEY3_INT_EXTI_LINE; /* 选择 EXTI 中断源 */EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; /* 中断模式 */EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;/* 上升沿触发 */EXTI_InitStructure.EXTI_LineCmd = ENABLE; /* 关闭中断/事件线 */EXTI_Init(&EXTI_InitStructure);

 

6、抢断优先级、响应优先级说明

抢断优先级高的,能打断抢断优先级低的;

l 当抢断优先级相同时,执行顺序由响应优先级决定;

l 当抢断优先级、响应优先级都相同时,则按中断向量表的顺序执行。

如果抢断优先级一样,则不会打断,而是等待完成后执行。

比如有ABCD四个中断:

STM32定时器与中断整理

 

一、当A正在执行,又来了中断B,由于B的抢断优先级更高,所以会打断A的运行;

二、当A正在执行,又来了中断C,由于C抢断优先级<=A,所以会等待A完成后,再执行C;

三、当A正在执行,同时来了C和D,由于ABC优先级都相同,所以不会打断,而C的响应优先级比D高,所以在A完成后,会先执行C,再执行D。

 

7、定时器说明

STM32F42xxx 系列控制器有2 个高级控制定时器10 个通用定时器2 个基本定时器,还有2 个看门狗定时器

控制器上所有定时器都是彼此独立的,不共享任何资源。各个定时器特性参考下表:

注意:其中最大定时器时钟可通过RCC_DCKCFGR 寄存器配置为90MHz 或者180MHz。

STM32定时器与中断整理

 

 

7.1基本定时器

主要两个功能,第一就是基本定时功能,生成时基,第二就是专门用于驱动数模转换器(DAC)。

基本定时器的内部时钟(CK_INT)频率默认设置为90MHz

 

7.2高级/通用定时器

高级控制定时器(TIM1 和TIM8)和通用定时器在在基本定时器的基础上引入了外部引脚,可以输入捕获和输出比较功能。高级控制定时器比通用定时器增加了可编程死区互补输出、重复计数器、带刹车(断路)功能,这些功能都是针对工业电机控制方面。

一般情况下,我们都是使用内部时钟,内部时钟CK_INT 即来自于芯片内部,等于180M。

引脚分布见下表:

STM32定时器与中断整理

 

STM32定时器与中断整理

 

 

7.3定时器拓展补充-主要特性

STM32定时器与中断整理

 

STM32定时器与中断整理

 

STM32定时器与中断整理

 

STM32定时器与中断整理

相关标签: 干货