📄 timer.c
字号:
#include "def.h"
#include "2440addr.h"
#include "includes.h"
//U8 IntCnt;
//#define OSTickISR() Timer0_ISR()
/*********************************************************************************************************
Timer_Isr()
********************************************************************************************************/
void __irq Timer0_ISR(void)
{
//rSRCPND =rSRCPND|( 1 << 10);
//rINTPND = rINTPND;
ClearPending(BIT_TIMER0);
// IntCnt++;
//OSIntEnter();
Uart_Printf("%d->%d\n",OSTCBList->OSTCBPrio,OSTCBList->OSTCBDly);
//Uart_Printf("\nOS_Tick");
//Uart_Printf();
/*
if(IntCnt%2)
rGPBDAT = 0x07fe;
else
rGPBDAT = 0x0000;*/
OSTimeTick();
//OSIntExit();
}
/*********************************************************************************************************
Initial Timer0 use for ucos time tick
********************************************************************************************************/
void Timer0Init(void)
{
// 定时器设置
rTCON = rTCON & (~0xf) ; // clear manual update bit, stop Timer0
rTCFG0 &= 0xffffff00; // set Timer 0&1 prescaler 0
rTCFG0 |= 4; //prescaler = 4+1
rTCFG1 &= 0xfffffff0; // set Timer 0
rTCFG1 |= 0x00000001; // set Timer 0 MUX 1/4
//rTCNTB0 = (PCLK / (60 * OS_TICKS_PER_SEC)) - 1;
//rTCNTB0=33300; //2000/(124+1)/16=1
rTCNTB0=33300; //2000/(4+1)/4=100
rTCON = rTCON & (~0xf) |0x02; // updata
rTCON = rTCON & (~0xf) |0x09; // star
}
/*********************************************************************************************************
system IsrInit
********************************************************************************************************/
//extern void OSTickISR(void);
void ISRInit(void)
{
// 设置中断控制器
rPRIORITY = 0x00000000; // 使用默认的固定的优先级
rINTMOD = 0x00000000; // 所有中断均为IRQ中断
// pISR_TIMER0= (U32) OSTickISR;
pISR_TIMER0= (U32) Timer0_ISR;
rINTMSK &= ~(1<<10); // 打开TIMER0中断允许
// IntCnt=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -