以定时中断为例,介绍如何配置和使用。
1. 定时器初始化
配置时钟频率和计数参数。
设置定时周期 = 计数器时钟 / (预分频器 + 1) / 自动重装值(ARR)。
2. STM32CubeMX 配置
打开 STM32CubeMX,选择定时器(如 TIM2)。
设置工作模式为 Internal Clock。
配置时钟源、预分频器和计数周期(ARR)。
使能中断并生成代码。
3. 使用 HAL 库配置定时中断
示例代码:
c
复制代码
// 使能定时器时钟
__HAL_RCC_TIM2_CLK_ENABLE();
// 初始化定时器
TIM_HandleTypeDef htim2;
htim2.Instance = TIM2;
htim2.Init.Prescaler = 7999; // 预分频器
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
htim2.Init.Period = 999; // 自动重装值
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
HAL_TIM_Base_Init(&htim2);
// 开启中断
HAL_TIM_Base_Start_IT(&htim2);
// 定时器中断回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
if (htim->Instance == TIM2) {
// 定时器溢出事件处理
}
}
// 中断向量表配置
void TIM2_IRQHandler(void) {
HAL_TIM_IRQHandler(&htim2);
}
4. 手动控制启动和停止
c
复制代码
HAL_TIM_Base_Start(&htim2); // 启动定时器
HAL_TIM_Base_Stop(&htim2); // 停止定时器
|