STM32定时器与中断整理

2020-08-13 14:44:42 浏览数 (1)

目录

1、系统异常中断

2、外部中断(全部)

3、优先级

5、如何开关中断示例

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

7、定时器说明

7.1基本定时器

7.2高级/通用定时器

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

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

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

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

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

1、系统异常中断

2、外部中断(全部)

3、优先级

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

5、如何开关中断示例

串口

代码语言:javascript复制
USART_ITConfig(DEBUG_USART1, USART_IT_RXNE, ENABLE); /* 使能串口接收中断 */USART_ITConfig(DEBUG_USART1, USART_IT_RXNE, DISABLE); /* 关闭串口接收中断 */

定时器

代码语言:javascript复制
TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE); /* 使能定时器更新中断 */TIM_ITConfig(TIM4, TIM_IT_Update, DISABLE); /* 关闭定时器更新中断 */

DMA

代码语言:javascript复制
DMA_ITConfig(DEBUG_SPI2_RX_DMA_STREAM,DMA_IT_TC,ENABLE);/* 开启传输完成中断*/DMA_ITConfig(DEBUG_SPI2_RX_DMA_STREAM,DMA_IT_TC, DISABLE);/*关闭传输完成中断*/

EXTI中断线(得重新配置)

代码语言:javascript复制
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 当抢断优先级相同时,执行顺序由响应优先级决定;

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

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

比如有ABCD四个中断:

一、当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。

7.1基本定时器

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

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

7.2高级/通用定时器

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

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

引脚分布见下表:

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

0 人点赞