📄 clock.c
字号:
#include "systypes.h"
#include "44b0.h"
#include "clock.h"
static UINT32 sysclocks;
#define OS_TICKS_PER_SEC 200
#define LEDBLINK
#ifdef LEDBLINK
#define LED(pattern) (rPDATE=(rPDATE & 0x10f) | ((pattern & 0x0f) << 4))
static UINT32 ledcnt = 0, ledpattern = 0;
#endif
#define TIMER0COUNT (CLOCKS_PER_SEC/OS_TICKS_PER_SEC) // timer0 counts per tick
static void __vTimer0Isr (void)
{
rI_ISPC = BIT_TIMER0; // clear pending bit of timer0
sysclocks += TIMER0COUNT;
#ifdef LEDBLINK
ledcnt ++;
if (ledcnt % 200 == 0) LED(ledpattern ++);
#endif
return;
}
void StartSysClock (void)
{
sysclocks = 0;
pISR_TIMER0 = (unsigned)__vTimer0Isr;
//dead zone = 0, prescaler value0 = 25
rTCFG0 = 24;
//no dma select, mux input0 = 1/2, timer0 input clock = 50000000/25/2 = 1000000Hz
rTCFG1 = 0x00000000;
//set T0 count
rTCNTB0 = TIMER0COUNT;
//update T0
rTCON = 0x00000002;
//autoreload and start timer0
rTCON = 0x00000009;
//non-vectored, IRQ enabled, FIQ disabled
rINTCON = 0x5;
//unmask TIMER0 interrupt
rINTMSK = ~(BIT_TIMER0 | BIT_GLOBAL);
return;
}
clock_t GetSysClock (void)
{
return (sysclocks + (TIMER0COUNT - rTCNTO0));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -