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 + -
显示快捷键?