登录/注册

STM32开关定时中断

STM32开关定时中断

更多

在 STM32 中,开启和关闭定时器中断通常涉及操作定时器中断使能位和 NVIC(嵌套向量中断控制器)设置。以下是详细步骤:


1. 开启定时器中断

(1) 使能定时器中断事件

使用 HAL 库(以 TIM1 更新中断为例):

// 开启 TIM1 更新中断
HAL_TIM_Base_Start_IT(&htim1);

或直接操作寄存器:

// 开启 TIM1 更新中断
__HAL_TIM_ENABLE_IT(&htim1, TIM_IT_UPDATE);

(2) 启用 NVIC 中断通道

// 使能 TIM1 中断通道(优先级需提前配置)
HAL_NVIC_EnableIRQ(TIM1_UP_IRQn);

2. 关闭定时器中断

(1) 关闭定时器中断事件

使用 HAL 库:

// 停止 TIM1 中断模式
HAL_TIM_Base_Stop_IT(&htim1);

或操作寄存器:

// 关闭 TIM1 更新中断
__HAL_TIM_DISABLE_IT(&htim1, TIM_IT_UPDATE);

(2) 禁用 NVIC 中断通道(可选)

// 关闭 TIM1 中断通道
HAL_NVIC_DisableIRQ(TIM1_UP_IRQn);

关键说明

  1. 完整流程

    • 开启Start_IT() + EnableIRQ()
    • 关闭Stop_IT() + DisableIRQ()(或单独用 Stop_IT
  2. 中断服务函数
    无论中断开关状态,必须实现中断处理函数(例如 TIM1_UP_IRQHandler),否则可能触发硬件错误。

  3. HAL 库的工作机制

    • HAL_TIM_Base_Start_IT() 内部已使能中断事件并启动计数器。
    • HAL_TIM_Base_Stop_IT() 会同时停止计数器和中断。
  4. 清除中断标志
    在中断函数中需手动清除标志位(HAL 库自动处理):

    void TIM1_UP_IRQHandler(void) {
     HAL_TIM_IRQHandler(&htim1); // HAL 库会自动清标志
     // 或手动清标志:
     // __HAL_TIM_CLEAR_IT(&htim1, TIM_IT_UPDATE);
    }

示例代码

/* 初始化定时器中断 */
void TIM_Init(void) {
  htim1.Instance = TIM1;
  htim1.Init.Prescaler = 8399; // 84MHz/8400 = 10kHz
  htim1.Init.Period = 5000;    // 0.5秒中断
  HAL_TIM_Base_Init(&htim1);

  // 配置NVIC优先级
  HAL_NVIC_SetPriority(TIM1_UP_IRQn, 1, 0);
}

/* 开启中断 */
void Start_TIM_Interrupt(void) {
  HAL_TIM_Base_Start_IT(&htim1);      // 使能定时器中断
  HAL_NVIC_EnableIRQ(TIM1_UP_IRQn);   // 启用NVIC通道
}

/* 关闭中断 */
void Stop_TIM_Interrupt(void) {
  HAL_TIM_Base_Stop_IT(&htim1);        // 关闭定时器中断
  // HAL_NVIC_DisableIRQ(TIM1_UP_IRQn); // 可选:禁用NVIC通道
}

注意事项

根据需求选择操作方式,通常只需调用 Start_IT()/Stop_IT() 即可管理中断开关。

介绍普通定时中断的使用

STM32定时器有哪些使用方式呢?普通定时中断该怎样去使用呢?

2022-01-25 07:23:34

怎样去配置STM32F103通用定时器的定时中断

STM32F103通用TIMx定时器功能包括哪些?怎样去配置STM32F103通用定时

2021-11-23 07:20:02

怎样去使用STM32通用定时器的定时中断功能呢

STM32的通用定时器是什么?STM32的通用定时器有何功能?怎样去使用

2021-11-17 06:07:57

单片机系统时钟既做定时中断,又做延时

使用系统时钟做定时中断又做延时处理1.先初始化SysTick系统定时中断查看对应例程2.写延时函数根据初始化时钟查看没us系统振动多少下void delay_us(uint32_t nus

资料下载 罗星 2022-01-12 18:42:36

STM32 CubeMX 1ms定时中断的实现

本文在别人的基础上,用自己的办法实现了1ms定时器1中断,并实现了8ms、100ms、500ms三个不同速度的输出控制。STM32F042,Cu

资料下载 王银喜 2021-12-28 19:33:42

avr定时中断_中断及其使用 AVR

avr定时中断Interrupts are basically events that require intermediate attention by the microcontroller.

资料下载 小峰 2021-12-06 19:36:05

STM32CubeMx之TIM定时中断

STM32有多个定时器可供使用,且有多种使用方式,包括普通定时、PWM输出、输入捕获、触发ADC等。本篇文章主要介绍普通

资料下载 贾大林 2021-11-30 12:51:04

51单片机外部中断的C51编程程序和相关知识免费下载

1、51单片机的5大中断源:串行口中断、定时中断1、外部中断1、

资料下载 佚名 2019-08-27 17:30:00

远程开关定时器应该如何接线

远程开关定时器:4G网络信号,远程控制不限距离,无需下载APP,手机小程序实现远距离对开关的控制,网络自动校时,可设置自动定时开、关,也可以本地

2021-10-14 16:20:15

STM32定时中断

STM32的定时中断,就是你定一个时间,STM32会每隔这个时间去打断主函数的运行,去干其他事情1、

2021-08-18 07:46:26

怎么计算STM32定时中断发生的时间

编译工具:MDK5举例芯片:STM32F103RC1.先看看计算公式:定时中断发生的时间T:T = (arr+1)*(psc+1)/72M当设置arr=999,psc= 71999,T=1s

2021-08-13 08:07:59

我们在使用开关定时器时都有哪些注意事项

关于开关定时器使用注意事项,目前市场上两款主流的开关定时器:按键式开关定时器和蓝牙开关

2021-06-05 18:04:54

微电脑时控开关定时器如何设置定时时间

目前市场上主流的时控开关定时器分为两款:按键式时控开关定时器和蓝牙时控开关定时器。 两款

2021-06-05 18:03:37

STM32_TIM定时- 中断

STM32_TIM定时-中断

2020-04-08 09:49:44

STM8S_003_ TIM定时中断

STM8S_003_TIM定时中断

2020-03-20 10:46:06

7天热门专题 换一换
相关标签