EFR32FG14 使用定时器TIMER做毫秒级定时
1.添加头文件
#include "em_timer.h"
2.初始化TIMER
主时钟用到38.4MHz
void initTimer(void)
{
CMU_ClockEnable(cmuClock_TIMER1, true);
TIMER_Init_TypeDef timerInit = TIMER_INIT_DEFAULT;
timerInit.prescale = 1;
TIMER_Init(TIMER1, &timerInit);
TIMER_TopSet(TIMER1, 19200);
TIMER_IntEnable(TIMER1, TIMER_IEN_CC0 | TIMER_IEN_OF);
NVIC_EnableIRQ(TIMER1_IRQn);
}
3.编写中断函数
void TIMER1_IRQHandler(void)
{
uint32_t flags = TIMER1->IF;
TIMER_IntClear(TIMER1, flags);
cnt_1++;
if(cnt_1>=1000)
{
cnt_1 = 0;
flag1=1;
}
}
4.在主函数中调用初始化函数
int main(void)
{
CHIP_Init();
initGpio();
initTimer();
while (1) {
EMU_EnterEM1();
}
}
注意:在循环中要添加EMU_EnterEM1();,否则跑不起来。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)