外部中断与定时器中断的基本概念
外部中断是由外部事件触发的,例如按键按下、传感器信号变化等。STM32的外部中断通过GPIO引脚实现,可以配置为上升沿、下降沿或双边沿触发。外部中断的响应速度快,适合处理实时性要求高的外部事件。
定时器中断是由内部定时器产生的,基于预分频和重装载值计算时间间隔。定时器中断适用于周期性任务,如数据采样、PWM生成等。STM32的定时器功能强大,支持多种工作模式,包括基本定时器、通用定时器和高级定时器。
外部中断与定时器中断的触发机制
外部中断的触发依赖于硬件信号,例如:
// 配置PA0为外部中断,下降沿触发
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
// 启用外部中断线0
HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(EXTI0_IRQn);
定时器中断的触发由内部计数器控制,例如:
// 配置TIM2为1ms周期中断
TIM_HandleTypeDef htim2;
htim2.Instance = TIM2;
htim2.Init.Prescaler = 8399; // 84MHz / 8400 = 10kHz
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
htim2.Init.Period = 9; // 10kHz / 10 = 1kHz (1ms)
HAL_TIM_Base_Init(&htim2);
// 启用TIM2中断
HAL_TIM_Base_Start_IT(&htim2);
HAL_NVIC_Set
1093

被折叠的 条评论
为什么被折叠?



