EFR32FG14 使用定时器TIMER做毫秒级定时

2023-05-16

EFR32FG14 使用定时器TIMER做毫秒级定时

1.添加头文件

#include "em_timer.h"

2.初始化TIMER
主时钟用到38.4MHz

void initTimer(void)
{
// Enable clock for TIMER1 module
  CMU_ClockEnable(cmuClock_TIMER1, true);

  // Initialize timer with defined prescale value
  TIMER_Init_TypeDef timerInit = TIMER_INIT_DEFAULT;
  timerInit.prescale = 1;
  TIMER_Init(TIMER1, &timerInit);
  // Set Top value
  // Note each overflow event constitutes 1/2 the signal period
  TIMER_TopSet(TIMER1, 19200);		//0.001 = 1/38400000*19200*2 s

  // Enable TIMER1 interrupts
  TIMER_IntEnable(TIMER1, TIMER_IEN_CC0 | TIMER_IEN_OF);
  NVIC_EnableIRQ(TIMER1_IRQn);
}

3.编写中断函数

void TIMER1_IRQHandler(void)
{
  // Acknowledge the interrupt
  uint32_t flags = TIMER1->IF;
  TIMER_IntClear(TIMER1, flags);
  cnt_1++;
  if(cnt_1>=1000)   //到达1秒钟
  {
	  cnt_1 = 0;
	  flag1=1;
  }

}

4.在主函数中调用初始化函数

int main(void)
{
  
	CHIP_Init();

  
 	initGpio();
 
 	initTimer();

  
	while (1) {
   
 		EMU_EnterEM1(); 
		// Enter EM1 (won't exit)
 
 	}

}

注意:在循环中要添加EMU_EnterEM1();,否则跑不起来。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EFR32FG14 使用定时器TIMER做毫秒级定时 的相关文章

随机推荐