0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

聊聊TIMER事件触发中断的响应话题

茶话MCU 来源:茶话MCU 2024-05-06 16:07 次阅读

接着上次的TIMER事件触发中断的响应话题继续聊聊。

情况是这样的,现在使用STM32G4系列的TIM8,工作在中心对齐计数,PWM单脉冲模式,使用内部系统时钟做时钟源,计数时不做分频,即PSC=0。CH2做PWM输出。启动时计数器从0开始计数,与RCR对应的计数器值为3。请问在0~ARR范围内调整CCR的值时,整个工作周期内进入基于通道比较事件的中断响应次数可能是下面哪些选项?

A:1 B:2 C:3 D:4 E:0

因为RCR=3和单脉冲模式。意味着从启动开始到计数停止,发生4次溢出后产生更新事件并停止计数,计数器刚好工作2个完整的计数周期。

673714da-0ae0-11ef-a297-92fbcf53809c.png

如果说将通道比较事件的中断请求使能禁用掉或者将NVIC端与该事件有关的中断响应使能禁用掉,自然不会发生针对通道1比较事件的中断响应。从这个角度讲,选择E就很自然了。现在假设针对通道比较事件的中断请求以及NVIC端的中断响应允许都使能了,那还可能有哪些情形呢?有没有可能一次比较中断响应都不发生呢?

其实是可能的。

前面说过,STM32 TIMER采样中心对齐计数模式的话,又分三种计数模式【具体解读见前文《一个基于TIMER事件的中断响应话题》】。如果TIMER采样中心对齐计数模式1,且CCR=0时,是不会发生比较事件的,自然不会有相应的中断响应发生。

有没有可能在当前计数周期内只发生2次中断响应呢?这里有两种情况:

第一种情况,定时器工作在中心对齐计数模式1或模式2,CCR在(0,ARR)之间取值,则在一个周期内只发生1次比较事件,整个计数周期【这里就是2个计数周期】则仅发生2次比较事件,自然可以发生2次中断响应。

673af99c-0ae0-11ef-a297-92fbcf53809c.png

6746446e-0ae0-11ef-a297-92fbcf53809c.png

第二种情况,定时器工作在任一中心对齐计数模式,CCR取不小于ARR的值,这时每个计数周期仅发生1次比较事件,整个计数周期发生2次比较事件,进而发生两次中断响应。

674fc390-0ae0-11ef-a297-92fbcf53809c.png

显然,如果采用中心对齐计数模式3,即在向上计数和向下计数过程中都可以产生比较事件,CCR在(0,ARR)之间取值时,发生4次中断响应就不难理解了。

67583638-0ae0-11ef-a297-92fbcf53809c.png

经过前面的分析,我们知道发生0次、2次、4次中断响应都是可能的。那么,只发生1次或3次中断响应有无可能呢?

这里的条件对ARR和CCR的值并未具体说明,中断响应持续时间也未明确。那么,即使定时器采用中心对齐模式3,中断响应次数一定就是4次吗?未必。

这里使用STM32G474的TIM8来进行验证,定时器计数时钟与主频170MHz一致,不做计数分频。设定RCR=3,CCR=2000,ARR=4000.

67653fcc-0ae0-11ef-a297-92fbcf53809c.png

我们可以通过调整中断服务程序持续时间,在上述TIMER时基参数不变的情况下让比较中断只进2次或3次。见下面图示:

676f60a6-0ae0-11ef-a297-92fbcf53809c.png

有没有可能即使在中心对齐模式3条件,整个计数周期内只发生一次中断响应呢?其实也是可能的。我们可以调整TIMER的时间参数,让比较事件的触发足够近并令中断服务程序也持续一定的时间,即使发生4次比较事件,完全可能最终只进1次比较中断服务程序。见下面测试结果示意图:【ARR=3,CCR=2,中心对齐模式3】

677a8580-0ae0-11ef-a297-92fbcf53809c.png

67949cb8-0ae0-11ef-a297-92fbcf53809c.png

看来,前面提到的5种结果都是可能的。



审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计数器
    +关注

    关注

    32

    文章

    2253

    浏览量

    94296
  • RCR
    RCR
    +关注

    关注

    0

    文章

    2

    浏览量

    6837
  • PWM输出
    +关注

    关注

    1

    文章

    66

    浏览量

    5113
  • 中断响应
    +关注

    关注

    0

    文章

    11

    浏览量

    2943

原文标题:一个基于TIMER事件的中断响应话题_续

文章出处:【微信号:stmcu832,微信公众号:茶话MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    利用TIMER事件和栈帧体验中断响应

    对于这几个中断响应的概念,我们是否可以比较直观地感受下呢?
    的头像 发表于 11-05 16:45 799次阅读
    利用<b class='flag-5'>TIMER</b>事件和栈帧体验<b class='flag-5'>中断</b><b class='flag-5'>响应</b>

    【创龙TMS320C6748开发板试用】+ Timer配置 + Timer触发中断 + GPIO控制LED闪烁

    触发中断// Reset the Counter for Timer0:12CSL_FINST(tmr0Regs->TCR, TMR_TCR_READRSTMODE12, RESET
    发表于 11-23 00:30

    请问28027用timer0触发ADC,无法进入timer0中断是为什么?如何解决?

    入InitADC函数之后,就无法进入timer0的TINT0中断。注释掉之后,就可以正常进入TINT0中断。InitADC函数来自官方代码,在f2802x_adc.c中。无法进入TINT0中断
    发表于 06-14 00:10

    TM4C,TIMER触发ADC配制方法一直进不去中断

    TIMER触发ADC配制方法一直进不去中断,麻烦看看有没有问题呢,用ADC_TRIGGER_PROCESSOR方式可以进中断,ADC_TRIGGER_
    发表于 08-14 07:33

    请问怎样对单片机边沿触发中断响应时刻进行测量?

    为什么要对单片机边沿触发中断响应时刻进行测量?如何对单片机的边沿触发中断响应时刻进行准确的测量
    发表于 04-15 07:04

    基于TIMER中断模式秒中断定时的设计实现

    函数,注册用户指定的 TIMER0 中断服务函数。调用 device_control 函数使能中断和配置定时周期。此函数是示例的中断服务函数,作用是判断具体是哪个 COMP
    发表于 07-12 18:05

    Linux中断(interrupt)子系统之一:软件中断(softIRQ)

    软件中断(softIRQ)是内核提供的一种延迟执行机制,它完全由软件触发,虽然说是延迟机制,实际上,在大多数情况下,它与普通进程相比,能得到更快的响应时间。软中断也是其他一些内核机制的
    发表于 05-13 10:33 1257次阅读

    聊聊关于架构的话题

     技术需要架构,芯片的架构,软件需要架构,公司需要架构,建筑需要架构,产品需要架构,人也需要架构,聊聊架构的话题
    的头像 发表于 09-28 02:48 2194次阅读

    C51单片机外部中断触发方式

    1. 电平触发方式 ○ CPU采样外部中断引脚电平 ○ 低电平,则硬件置1(IE=1) ○ 高电平,则硬件清0(IE=0) ○ 外部中断引脚的低电平要一直保持,直到CPU响应外部
    发表于 11-19 12:06 90次下载
    C51单片机外部<b class='flag-5'>中断</b>的<b class='flag-5'>触发</b>方式

    "外部中断----高低电平触发,(边沿触发)上升沿触发和下降沿触发区别"

    外部中断可以分为电平触发和边缘触发两种,那么这两种中断有什么区别,我们今天讲解下1什么是中断CPU在处理某一事件A时,发生了另一事件B请求C
    发表于 11-22 15:51 11次下载
    "外部<b class='flag-5'>中断</b>----高低电平<b class='flag-5'>触发</b>,(边沿<b class='flag-5'>触发</b>)上升沿<b class='flag-5'>触发</b>和下降沿<b class='flag-5'>触发</b>区别"

    微机原理——8086中断类型以及中断向量表、中断响应中断返回

    响应1、外部可屏蔽中断响应2、外部不可屏蔽中断响应3、内部中断
    发表于 11-24 16:51 16次下载
    微机原理——8086<b class='flag-5'>中断</b>类型以及<b class='flag-5'>中断</b>向量表、<b class='flag-5'>中断</b><b class='flag-5'>响应</b>、<b class='flag-5'>中断</b>返回

    MCU之TIMER精准延时(二)

    每一个TIMER都可以配置定时器溢出中断。使能溢出中断,计数器溢出会触发中断操作。
    发表于 02-08 15:49 0次下载
    MCU之<b class='flag-5'>TIMER</b>精准延时(二)

    华芯微特MCU之TIMER触发ADC

    华芯微特MCU之TIMER触发ADC
    的头像 发表于 09-27 16:21 803次阅读
    华芯微特MCU之<b class='flag-5'>TIMER</b><b class='flag-5'>触发</b>ADC

    什么是中断响应次序?什么是中断处理次序?

    次序 所谓中断响应次序,可以理解为当系统出现中断请求时,响应这些请求的顺序。而中断请求是指来自计算机外部或内部的事件(如键盘输入、硬件故障等
    的头像 发表于 10-24 11:49 2290次阅读

    聊聊一个关于TIMER事件触发中断响应话题

    情况是这样的,现在使用STM32G4系列的TIM8,工作在中心对齐计数,单脉冲PWM模式,使用内部系统时钟做时钟源,计数时不做分频,即PSC=0。CH1做PWM输出。
    的头像 发表于 04-28 09:44 470次阅读
    <b class='flag-5'>聊聊</b>一个关于<b class='flag-5'>TIMER</b>事件<b class='flag-5'>触发</b><b class='flag-5'>中断</b>的<b class='flag-5'>响应</b><b class='flag-5'>话题</b>