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);
关键说明
-
完整流程:
- 开启:
Start_IT()+EnableIRQ() - 关闭:
Stop_IT()+DisableIRQ()(或单独用Stop_IT)
- 开启:
-
中断服务函数:
无论中断开关状态,必须实现中断处理函数(例如TIM1_UP_IRQHandler),否则可能触发硬件错误。 -
HAL 库的工作机制:
HAL_TIM_Base_Start_IT()内部已使能中断事件并启动计数器。HAL_TIM_Base_Stop_IT()会同时停止计数器和中断。
-
清除中断标志:
在中断函数中需手动清除标志位(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通道
}
注意事项
- 避免中断重入:在关闭中断期间,定时器事件仍可能发生(标志位置位),重新使能后会立即触发中断。
- 实时性要求:关闭 NVIC 可立即屏蔽中断,但
Stop_IT()会停止计数器运行。 - 建议直接使用 HAL 库的
Start_IT()和Stop_IT()简化流程。
根据需求选择操作方式,通常只需调用 Start_IT()/Stop_IT() 即可管理中断开关。
单片机系统时钟既做定时中断,又做延时
使用系统时钟做定时中断又做延时处理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
远程开关定时器应该如何接线
远程开关定时器:4G网络信号,远程控制不限距离,无需下载APP,手机小程序实现远距离对开关的控制,网络自动校时,可设置自动定时开、关,也可以本地
2021-10-14 16:20:15
怎么计算STM32定时中断发生的时间
编译工具:MDK5举例芯片:STM32F103RC1.先看看计算公式:定时中断发生的时间T:T = (arr+1)*(psc+1)/72M当设置arr=999,psc= 71999,T=1s
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 如何进行编码器的正确接线?接线方法介绍
- 什么是场效应管?它的作用是什么?
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- amoled屏幕和oled区别
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 苹果笔记本macbookpro18款与19款区别
- 通讯隔离作用
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机