timer.c

来自「SOS操作系统用于无线传感器网络节点的源代码」· C语言 代码 · 共 53 行

C
53
字号
#include <sos_timer.h>
#include <sos.h>
#include "timer.h"
#include "hal.h"

extern bool has_set_main_clock;
/**
 * @brief timer hardware routine
 */

void timer_hardware_init(uint8_t interval, uint8_t scale){


   HAS_CRITICAL_SECTION;
   ENTER_CRITICAL_SECTION();
  if (!has_set_main_clock)
   {
     SET_MAIN_CLOCK_SOURCE(CRYSTAL);
     has_set_main_clock=true;
   }
   TIMER34_INIT(3);
   T3CTL |= (scale << 5);
   T3CC0 = interval;
   CLKCON |= DEFAULT_TIMER_FREQ; //0.25MHZ
   TIMER34_ENABLE_OVERFLOW_INT(3,INT_ON);
   INT_ENABLE(INUM_T3, INT_ON);
   TIMER3_RUN(TRUE);
   LEAVE_CRITICAL_SECTION();

  timer_init();

}

void timer_setInterval(int32_t val)
{
	uint8_t interval;
	if(val > 250) {interval = 250;}
	else if(val <= 2) {interval = 2;}
	else {interval = (uint8_t)val - 1;}

	

    T3CC0 = interval;

   TIMER34_ENABLE_OVERFLOW_INT(3,INT_ON);
   INT_ENABLE(INUM_T3, INT_ON);
   TIMER3_RUN(TRUE);



}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?