Cortex-m0之DualTimers定时器

本文介绍了Cortex-M0处理器中的DualTimers特性,包括三种定时模式(自由运行、周期、单次)、16/32位计数器、分频选项以及控制和中断相关寄存器。还给出了使用示例,演示如何配置定时器以实现不同功能,如循环计数和延时。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1. DualTimers简介

cortex m0是ARM公司推出的一款小型低功耗处理器,集成了dualtimers双定时器。

dualtimers是挂在APB总线上的从外设,有如下特性:

  • 可配置16位或32位计数器,采用向下计数的方式
  • 支持1/16/256分频
  • 每个定时器有独立的使能信号
  • 三种定时模式:单次计时one-shot,周期计时periodic,自由运行模式free-running
  • 周期装载寄存器period load register和后台装载寄存器background load register

 

2. DualTimers特性

2.1 三种定时模式

dualtimers有三种计时模式,分别是

1. 自由运行模式:从最大值向下计数,每计到0就产生一次中断,不断循环。

2.周期计时模式:从重装载值向下计数,每计到0就产生一次中断,不断循环。重装载值可在定时器初始化时进行配置。如果在counter正常计数时配置重装载值,那么counter会立即从重装载值重新向下计数。

3.单次计时模式:计数器只产生一次中断,计数器向下计到0时就会停止。

 

 

 

 

 

2.2 16bit或32bit宽度counter计数器

 计数器counter可选16bit宽度或32bit宽度

2.3 定时器分频

 

配置寄存器:control register [3:2] TimerPre

定时器支持1分频,16分频和256分频。

 一般微秒、毫秒、秒级的延时,完全可以使用1分频作为分频因子,且更加准确。

由于这里使用的系统时钟是50MHz,希望产生1秒中的时间间隔,只需要将分频模式设为1分频,装载值设为50M即可。

 

2.4 装载值和当前值

定时器采用的是向下计数的方式,因此配置装载值后,计时器从装载值向下计数直至计至0并产生中断。

在周期定时模式下,计至0后会重新从装载值向下计数并循环往复。

对装载寄存器Load Register写值,能够直接将向下计数的counter重设到新装载值(也就是说如果上次计数还没有计到0,这一修改就使得上次计数还没有进入中断就重新计数)。

如果对后台装载寄存器Background Load Register写值,则不会立即修改counter,而是counter向下计数至0后开始下一次计数时,从后台装载寄存器的值开始计时。

 

3. 配置寄存器

DualTimers控制较为简单,寄存器较少。

 TIMER1LOAD    装载寄存器。向这一寄存器写入装载值。

TIMER1VALUE    当前值寄存器,可从这一寄存器将counter当前的值读出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值