可靠的MCU伙伴
Design for Reliability
全国服务咨询热线
0757-8185 9361

05SWM系列之TIMER计数器


华芯微|MCUTIMER精准延时

一、TIMER定时器之计数功能

我们今天详细讲解一下TIMER计数器功能。

计数器功能使用片时钟作为计数基准,以SWM190加强型定时器为例,有432 bit向下计数的TIMER根据配置,外部信号每一次上升沿,计数寄存器数值将1

每一个TIMER都可以配置定时器溢出中断。使能溢出中断,计数器溢出会触发中断操作。

SWM190 TIMER延时功能配置库函数

下面我们以最简单的计数器器为例使用加强型定时器,计数器的方法实现每计数3个上升沿进入中断在此例程中,我们将A4间隔一段时间翻转一次,模拟外部信号源;A5设为计数三个上升沿翻转一次IO,通过翻转LED的状态来观察现象;将A7设置为计数器的输入引脚,与模拟外部信号源的A4脚物理连接

我们之前GPIOPORT的配置方法,在这里就不在做赘述,将A4/A5输出引脚通过GPIO_Init设置为输出,与外部LED引脚相连;将A7通过PORT_Init引脚设置为TIMER2的输入功能引脚

SWM190固件库中对TIMER的配置进行了说明,下面将根据库函数对SWM190TIMER配置,首先来看一下TIMR_Init函数的原型void TIMR_Init(TIMR_TypeDef * TIMRx, uint32_t mode, uint32_t prediv, uint32_t period, uint32_t int_en)。这个函数的实现是在SWM190_timr.c文件中,若要使用该函数在相应的应用程序的前面包含SWM190_ timr.h头文件。

函数的第一个参数为TIMR_TypeDe,它是一个结构体类型,该类型在SWM190.h中被定义。具体参数为指定TIMER模块,有效值包括TIMR0TIMR1TIMR2TIMR3BTIMR0BTIMR1BTIMR2BTIMR3

个参数为uint32_t mode,为TIMER模式配置,有效值包括TIMR_MODE_TIMER定时器)、TIMR_MODE_COUNTER计数器上升沿)、TIMR_MODE_OC输出比较)、TIMR_MODE_IC输入捕获);其中基础定时器只支持TIMR_MODE_TIMER(定时器);

第三个参数为uint32_t prediv,为TIMER分频配置,其中加强型定时器无分频只能为1;基本定时器可取值1-256

第四个参数为uint32_t period,为计数周期,其中加强型定时器为32bit,基础定时器为24bit

第五个参数为uint32_t int_en,为中断使能。

我们使用加强型定时器实现timer每计数3A4引脚上的上升沿信号进入TIMER中断,在中断中翻转A5

具体配置函数如下图所示:

 接下来我们看下中断服务子函数,在加强型定时器的中断服务函数中,实现每进一次中断GPIOA5翻转一次

、实验现象

下载好程序后,LED实现计数3A4引脚的上升沿翻转一次A5引脚的LED


具体详情可登录华芯微特官网:http://www.synwit.cn/

共享文件夹:ftp://221.217.59.230/

QQ技术交流群:492524359等方式获取最新支持