STM32的中断函数列举
时间: 2024-01-09 07:05:01 浏览: 35
STM32的中断函数包括以下几个:
1. 外部中断函数:这个函数用于处理外部中断,例如按键中断、外部传感器中断等。在STM32中,外部中断函数的命名格式为“void EXTIx_IRQHandler(void)”,其中x表示外部中断的编号,例如EXTI0_IRQHandler表示外部中断0的中断函数。
2. 定时器/计数器中断函数:这个函数用于处理定时器/计数器中断,例如定时器溢出中断、比较中断等。在STM32中,定时器/计数器中断函数的命名格式为“void TIMx_IRQHandler(void)”,其中x表示定时器/计数器的编号,例如TIM2_IRQHandler表示定时器2的中断函数。
3. 串口中断函数:这个函数用于处理串口中断,例如接收中断、发送中断等。在STM32中,串口中断函数的命名格式为“void USARTx_IRQHandler(void)”,其中x表示串口的编号,例如USART1_IRQHandler表示串口1的中断函数。
4. DMA中断函数:这个函数用于处理DMA传输完成中断。在STM32中,DMA中断函数的命名格式为“void DMAx_Streamy_IRQHandler(void)”,其中x表示DMA控制器的编号,y表示DMA通道的编号,例如DMA1_Stream0_IRQHandler表示DMA1的通道0的中断函数。
相关问题
stm32中断函数例程
在STM32中断函数例程中,主要包括两个部分:中断初始化和中断处理函数。其中,中断初始化需要设置中断优先级、使能中断等操作;中断处理函数则根据具体的中断类型进行相应的处理。
以下是一个简单的中断函数例程:
```
#include "stm32f10x.h"
void EXTI0_IRQHandler(void) // 定义外部中断0的中断处理函数
{
if (EXTI_GetITStatus(EXTI_Line0) != RESET) // 判断是否产生中断
{
// 中断处理代码
EXTI_ClearITPendingBit(EXTI_Line0); // 清除中断标志位
}
}
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE); // 使能GPIOA和AFIO时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; // 配置GPIOA.0作为输入引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; // 设置输入模式为浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure); // 初始化GPIOA.0
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); // 将GPIOA.0映射到外部中断0
EXTI_InitStructure.EXTI_Line = EXTI_Line0; // 配置外部中断线0
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; // 设置为中断模式
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; // 设置上升沿和下降沿触发
EXTI_InitStructure.EXTI_LineCmd = ENABLE; // 使能外部中断线0
EXTI_Init(&EXTI_InitStructure); // 初始化外部中断线0
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; // 配置外部中断0的中断向量
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00; // 设置抢占优先级为最高优先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00; // 设置响应优先级为最高优先级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; // 使能外部中断0的中断处理函数
NVIC_Init(&NVIC_InitStructure); // 初始化外部中断0的中断向量
while (1); // 进入循环等待外部中断
return 0;
}
```
stm32中断函数优先级
STM32中断函数的优先级可以通过设置中断优先级寄存器来指定。在STM32中,中断源优先级的设置取决于中断优先级分组的选择。根据引用,如果选择中断优先级分组的第3组,则抢占式优先级使用最高3位来指定,响应优先级使用最低1位来指定。根据引用,STM32目前支持84个中断,其中16个是内核中断,68个是外部中断。中断优先级的设置范围是0-15,其中使用8位中的高4位来指定。因此,总共有16种中断优先级可供选择。要设置中断优先级,可以使用中断初始化结构体中的NVIC_IRQChannelPreemptionPriority字段来指定抢占式优先级。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)