定时器触发 LED 周期闪烁。
按键中断改变闪烁频率。
代码实现:
c
复制代码
volatile uint32_t blink_delay = 500; // LED 闪烁延时
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
if (GPIO_Pin == GPIO_PIN_0) { // 按键中断
blink_delay = (blink_delay == 500) ? 200 : 500; // 切换延时
}
}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
if (htim->Instance == TIM2) {
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); // 切换 LED 状态
}
}
// 主循环中动态调整定时器周期
while (1) {
__HAL_TIM_SET_AUTORELOAD(&htim2, blink_delay); // 动态更新定时周期
}
|