蓝牙SoC EFR32BG22的外部定时器可以用于脉冲采集、精确定时等应用场景。很多应用设计都需要开启外部定时器时钟,才能满足要求,本文介绍SILICON LABS(芯科科技)的EFR32BG21/22蓝牙SoC芯片使用定时器实现精确计时的方法与步骤。
工具准备:simplicity studio 5、串口助手、EFR32BG22/21测试板。
实验目的:实现10Ms的精确计时。
EFR32BG22的芯片可以配置外部的38.4MHz的高速时钟晶振,在本次实验中,就用该颗晶振实现精确的计时。
首先需要进行高速晶振的初始化,给这颗时钟使能。
然后开始初始化定时器,如下图所示;
(1)前三条代码是必要的配置和初始化;
(2)TIMER_TopSet(TIMER0, CMU_ClockFreqGet(cmuClock_TIMER0)/ 100);是定时的设置函数,初值是1S,除100就是定时10MS了;
(3)timerInit.prescale = timerPrescale1;表示不分频;
(4)TIMER_IntEnable(TIMER0, TIMER_IEN_OF);NVIC_EnableIRQ(TIMER1_IRQn);是使能定时器中断的函数。
接下来如何才可以知道是否精确定时了呢,我们采取的测试方式是:通过不断翻转指定的GPIO口的输出,通过示波器查看是否达到了精确计时;
因此需要设置定时器中断的Handler,并配置GPIO口作为指定的输出。
配置GPIO口
然后是main的设计;
编译完成后烧录到开发板中,通过示波器可以看到如下波形;
示波器显示50HZ,这说明GPIO口电平翻转了100次。在1S的时间中有100次的频率。说明一次翻转的时间是10MS。
登录 | 立即注册
提交评论