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

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

3天内不再提示

基本定时器Basic timer (TIM6/TIM7)

单片机匠人 来源:单片机匠人 作者:单片机匠人 2022-05-07 10:38 次阅读

ENTER TITLE基本定时器Basic timer (TIM6/TIM7)

01TIM6和TIM7简介

基本定时器TIM6和TIM7各包含一个16位自动装载计数器,由各自的可编程预分频器驱动。这2个定时器是互相独立的,不共享任何资源。

02主要特性

TIM6和TIM7定时器的主要功能包括:

5de7e006-cdae-11ec-bce3-dac502259ad0.png

①16位自动重装载累加计数器;

②16位可编程(可实时修改)预分频器,用于对输入的时钟按系数为1~65536之间的任意数值分频器;

③在更新事件(计数器溢出)时产生中断/DMA请求。

03功能

这个可编程定时器的主要部分是一个带有自动重装载的16位累加计数器,计数器的时钟通过一个预分频器得到。

软件可以读写计数器、自动重装载寄存器和预分频寄存器,即使计数器运行时也可以操作。

5e158f56-cdae-11ec-bce3-dac502259ad0.jpg

5e25b552-cdae-11ec-bce3-dac502259ad0.png

自动重装载寄存器是预加载的,每次读写自动重装载寄存器时,实际上是通过读写预加载寄存器(Prescaler control register)实现。

当TIMx_CR1寄存器的UDIS位为’0’,则每当计数器达到溢出值时,硬件发出更新事件;软件也可以产生更新事件。

根据TIMx_CR1寄存器中的自动重装载预加载使能位(ARPE),写入预加载寄存器的内容能够立即或在每次更新事件时,传送到它的影子寄存器。

计数器由预分频输出CK_CNT驱动,设置TIMx_CR1寄存器中的计数器使能位(CEN)使能计数器计数。

ENTER TITLE预分频器(Prescaler description)

预分频可以以系数介于1至65536之间的任意数值对计数器时钟分频。它是通过一个16位寄存器 (TIMx_PSC)的计数实现分频。因为TIMx_PSC控制寄存器具有缓冲,可以在运行过程中改变它的数值,新的预分频数值将在下一个更新事件时起作用。

5e158f56-cdae-11ec-bce3-dac502259ad0.jpg

5e25b552-cdae-11ec-bce3-dac502259ad0.png

预分频系数从1变到2的计数器时序图

ENTER TITLE计数模式

计数器从0累加计数到自动重装载数值(TIMx_ARR寄存器),然后重新从0开始计数并产生一个计数器溢出事件。

每次计数器溢出时可以产生更新事件;(通过软件或使用从模式控制器)设置TIMx_EGR寄存器的 UG位也可以产生更新事件。

设置TIMx_CR1中的UDIS位可以禁止产生UEV事件,这可以避免在写入预加载寄存器时更改影子寄存器。在清除UDIS位为’0’之前,将不再产生更新事件,但计数器和预分频器依然会在应产生更新事件时重新从0开始计数(但预分频系数不变)。

另外,如果设置了TIMx_CR1寄存器中的 URS(选择更新请求),设置UG位可以产生一次更新事件UEV,但不设置UIF标志(即没有中断或 DMA请求)。

当发生一次更新事件时,所有寄存器会被更新并(根据URS位)设置更新标志(TIMx_SR寄存器的UIF位):

● 传送预装载值(TIMx_PSC寄存器的内容)至预分频器的缓冲区。

● 自动重装载影子寄存器被更新为预装载值(TIMx_ARR)。

以下是一些在TIMx_ARR=0x36时不同时钟频率下计数器工作的图示例子。

计数器时序图:

5e58cec4-cdae-11ec-bce3-dac502259ad0.png

内部时钟分频系数为1

5e6e3962-cdae-11ec-bce3-dac502259ad0.png

内部时钟分频系数为2

ENTER TITLE时钟源

计数器的时钟由内部时钟(CK_INT)提供。

TIMx_CR1寄存器的CEN位和TIMx_EGR寄存器的UG位是实际的控制位,(除了UG位被自动清 除外)只能通过软件改变它们。一旦置CEN位为’1’,内部时钟即向预分频器提供时钟。下图示出控制电路和向上计数器在普通模式下,没有预分频器时的操作。

ENTER TITLE调试模式

微控制器进入调试模式(Cortex-M3核心停止)时,根据DBG模块中的配置位DBG_TIMx_STOP 的设置,TIMx计数器或者继续计数或者停止工作。

审核编辑 :李倩

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

    关注

    31

    文章

    5336

    浏览量

    120230
  • 计数器
    +关注

    关注

    32

    文章

    2256

    浏览量

    94476
  • 定时器
    +关注

    关注

    23

    文章

    3246

    浏览量

    114719

原文标题:基于Stm32F030的基础定时器(Basic timer)学习笔记1

文章出处:【微信号:gh_e7f294a514ca,微信公众号:单片机匠人】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    使用STM32F1输入捕获功能时,TIM6TIM7无法实现输入捕获是哪里的问题?

    使用STM32F1输入捕获功能时,TIM6TIM7无法实现输入捕获,是芯片问题吗?在配置STM32F1的TIM6TIM7定时器时,发现无
    发表于 09-27 09:11

    STM32G030 TIM14,TIM16,TIM17无法触发ADC采样的原因?

    我查RM0444参考手册里面,对于ADC外部触发只有TIM1,TIM2,TIM3,TIM6,TIM15可以作为外部源触发ADC,是否
    发表于 05-24 07:13

    请问STM8S105k4的TIM2_CH2通道可以配置出触发TIM1定时器吗?

    各位大神: 请问STM8S105k4的TIM2_CH2通道可以配置出触发TIM1定时器吗? 求救··· 操作寄存配置···
    发表于 05-13 06:43

    使用STM8L151F3P6编程,调用TIM4定时器不能进入中断怎么解决?

    使用TIM2和TIM3都很好用,但不够用。使用TIM4定时器,用中断服务程序来编写一个软件计数。不论如何初始化编程,
    发表于 04-19 06:00

    STM32F205使定时器8的TIM_DMA_Update事件循环触发DMA2,dma不起作用是为什么?

    。 使用DMA2_Stream1_Channel7 ,在主程序中启动这两个函数,配置DMA和TIM8,然后观察test_data的值变为了0x06030444, 延时一段时间后清零 test_data,定时器可以正常进入中断,但
    发表于 04-17 07:21

    定时器TIM2输出TRGO信号,DMA使用DMA_REQUEST_TIM2_UP请求可以实现吗?

    定时器TIM2输出TRGO信号,DMA使用DMA_REQUEST_TIM2_UP请求可以实现吗?
    发表于 04-10 07:09

    STM32通过DMA方式传输TIM3定时器计数值,数值重复是为什么?

    AD值防止数据错乱,故DMA配置必须放在ADC之前。) 因此为了排除相同原因导致的数据重复,所以将DMA配置放在TIM3定时器初始化之前。 结果反馈,TIM3计数数值重复 3.D
    发表于 04-10 06:50

    TIM6定时器不能进入中断怎么解决?

    AD转换并使能DMA传输和中断 HAL_TIM_Base_Start_IT( htim1); //初始化定时器中断 HAL_TIM_Base_Start_IT( htim6); //初
    发表于 04-09 08:19

    STM207F TIM10和TIM9不能主从连接吗?

    TIM10作为主定时器连接到从定时器TIM9上就是TIM9不计数? 将TIM10没有 控制寄存
    发表于 04-09 06:16

    为什么STM32G030定时器TIM17定时器时钟源是SYSCLK而不是TPCLK?

    TIM14时钟源测试是来自TPCLK的。而且定时器的PSC寄存配置对实际频率没有影响
    发表于 04-01 06:06

    请问系统定时器TIM定时器有哪些区别?

    请问系统定时器TIM定时器有哪些区别
    发表于 03-20 07:40

    STM32L0采用tim6上升沿触发使ADC采样,把定时器频率配为4K后,采样周期不对,为什么?

    目前使用的是STM32L0系列芯片,采用tim6上升沿触发使ADC采样,但把定时器频率配为4K后,采样周期不对,首先想问tim6的时钟源来自哪,其次是这个定时器频率与采样频率的关系与计
    发表于 03-20 06:18

    STM32L053R8T6TR利用定时器触发ADC采样时选用tim6,为什么在cubenx中tim6无法选择时钟源?

    使用的是STM32L053R8T6TR,再利用定时器触发ADC采样时选用tim6,但在cubenx中tim6无法选择时钟源,那他的时钟源在哪,而且单独配置
    发表于 03-19 07:00

    stm32f10x高级定时器TIM1和通用定时器TIM2~TIM4如何同步作用?

    TIM2~TIM4我都用了,现在还需要用一个计时,但是只要我在定时器初始化加上TIM1的初始化,还没写中断函数,其他程序就什么都运行不了了
    发表于 03-19 06:26

    stm32f030c8的tim6tim15没有响应是为什么?

    stm32f030c8的芯片,tim6tim15没有响应,其他的时钟中断都可以响应。开发环境是STM32CubeMX_V6.8.1+Keil_V5.36,有哪位知道怎么解决。 原来
    发表于 03-18 07:24