当前位置: 首页 > news >正文

TIM_ITConfig() 和 TIM_Cmd()

在STM32的定时器中断配置中,TIM_ITConfig() 和 TIM_Cmd() 是两个关键函数,它们分别控制中断使能定时器计数器的启停,作用层级不同。以下是详细解释:

1. TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE)

作用
  • 启用定时器的特定中断源(这里是更新中断 TIM_IT_Update)。

  • 该函数操作的是定时器的 中断使能寄存器 TIMx_DIER(DMA/Interrupt Enable Register)。

底层操作
TIMx->DIER |= TIM_IT_Update;  // 置位DIER的UIE位(Update Interrupt Enable)
  • TIM_IT_Update 对应 TIMx_DIER.UIE 位(Update Interrupt Enable)。

  • 当 UIE=1 时,若 TIMx_SR.UIF=1(更新标志位),则定时器会向 NVIC(嵌套向量中断控制器)发送中断请求。

中断流程中的位置
  • 配置阶段:在初始化时调用,告诉定时器“允许更新事件触发中断”。

  • 硬件行为
    当 CNT == ARR 时,硬件置 UIF=1 → 若 UIE=1,则触发中断;若 UIE=0,即使 UIF=1 也不会中断。

 2. TIM_Cmd(TIM2, ENABLE)

作用
  • 启动或停止定时器的计数器CNT 寄存器的计数)。

  • 该函数操作的是定时器的 控制寄存器 TIMx_CR1(Control Register 1)

底层操作

TIMx->CR1 |= TIM_CR1_CEN;  // 置位CR1的CEN位(Counter Enable)
  • CEN=1:启动计数器,CNT 开始根据时钟频率递增/递减。

  • CEN=0:停止计数器,CNT 冻结在当前值。

中断流程中的位置
  • 定时器的工作开关

    • 即使中断已使能(UIE=1),若 CEN=0(定时器未启动),CNT 不会变化,永远不会触发 UIF=1,因此也不会中断。

    • 只有 CEN=1 时,定时器才开始计数,并在 CNT == ARR 时触发中断

3. 两者在中断流程中的分工

完整中断触发条件

定时器中断的触发需要同时满足以下条件

  1. 定时器运行TIMx_CR1.CEN = 1(由 TIM_Cmd(ENABLE) 设置)。

  2. 中断使能TIMx_DIER.UIE = 1(由 TIM_ITConfig(ENABLE) 设置)。

  3. 事件发生:硬件检测到 CNT == ARR,置 TIMx_SR.UIF = 1

 

Q1:为什么需要分开两个函数?
  • 解耦控制

  • TIM_ITConfig() 管是否允许中断(逻辑控制)。

  • TIM_Cmd() 管是否启动定时器(物理控制)。
    例如:你可能需要定时器运行(CEN=1)但不触发中断(UIE=0),用于PWM生成。

 

Q2:调用顺序有要求吗?
  • 推荐顺序

    1. 先配置中断(TIM_ITConfig)。

    2. 再启动定时器(TIM_Cmd)。

    • 原因:避免定时器启动后立即触发中断,但中断尚未配置完成。

Q3:如果只调用其中一个函数会怎样?
情况结果
仅 TIM_ITConfig(ENABLE)定时器不计数(CEN=0),无中断触发。
仅 TIM_Cmd(ENABLE)定时器计数,UIF 会置位,但中断未使能(UIE=0),不会进入中断服务程序。

 

相关文章:

  • 什么是事件循环
  • matlab 环形单层柱状图
  • 聊一聊接口自动化测试脚本如何进行维护的?
  • Moldflow模流分析教程
  • 轨道六要素的物理意义与几何表示
  • Win10驱动程序强制签名怎么禁用/开启?
  • IEEE:新进展!AI 模型可以生成 3D 脑部MRI 图像,同时解决数据稀缺和隐私问题
  • 第32讲:卫星遥感与深度学习融合 —— 让地球“读懂”算法的语言
  • 打靶日记 zico2: 1
  • Pandas数据合并与重塑
  • 2025.04.19-阿里淘天春招算法岗笔试-第一题
  • 《Android 应用开发基础教程》——第二章:Activity 与生命周期详解
  • MATLAB 控制系统设计与仿真 - 38
  • ACM ICPC算法基础包括哪几类
  • Git命令归纳
  • 国产之光DeepSeek架构理解与应用分析04
  • 43.[前端开发-JavaScript高级]Day08-ES6-模板字符串-展开运算符-ES7~ES11
  • 免费多平台运行器,手机畅玩经典主机大作
  • 一个改善Entity Framework异常处理和错误信息的开源项目
  • 网络--应用层自定义协议与序列化
  • 西藏艺术来到黄浦江畔,“隐秘之门”艺术展外滩三号开幕
  • 上海古籍书店重新开卷,在这里淘旧书获新知
  • 人民文学奖颁出,董宇辉获传播贡献奖
  • 亲诚惠容行大道,命运与共开新篇——中共中央政治局委员、外交部长王毅谈习近平主席对越南、马来西亚、柬埔寨进行国事访问
  • 全国首个医工交叉“MD+PhD”双博士培养项目在沪启动
  • 霸王茶姬成美股“中国茶饮第一股”:首日涨近16%,市值60亿美元