📄 timer4.c
字号:
/*
*********************************************************************************************************
* 文件: Timer4.C
* 描述: Timer4 分配为 uC/OS 的系统节拍中断函数.
* 编写: boeby
*********************************************************************************************************
*/
#include "Includes.h"
/*
********************************************************************************************************
* 函数: void Init_Timer4 (void).
* 描述: 1. 初始化 Timer4, 应该在 OS 启动后的第一个执行的任务中调用该函数.
* 2. PCLK 分频后输出约为 1MHz ,设置 Timer2.3 时应注意.
* 3. 如须更改 OS 的节拍率,请直接更改 OS_TICKS_PER_SEC.
********************************************************************************************************
*/
#define Ftclk 1000000 // 分频后的输出频率.
void Init_Timer4 (void)
{
rTCFG0 = (rTCFG0&(~(0x0ff<<8))) | (((INT8U)(PCLK/Ftclk)-1)<<8); // Fout = 1 MHz.
rTCFG1 = (rTCFG1&(~(0x0f<<16))) | (0x00<<16); // 1/2. F t4 = 0.5 MHz.
rTCNTB4 = PCLK / ((INT8U)(PCLK/Ftclk)-1) / 2 / OS_TICKS_PER_SEC;
rTCON = (rTCON & ~(0x7<<20)) | ((1<<22)+(1<<21)+(0<<20)); // manual update for Timer 4.
rTCON = (rTCON & ~(0x7<<20)) | ((1<<22)+(0<<21)+(1<<20)); // auto reload .Start for Timer 4.
rINTMOD &= ~(BIT_TIMER4); // IRQ mode.
rINTMSK &= ~(BIT_TIMER4); // 0 = Interrupt service is available.
}
/*
********************************************************************************************************
* 函数: void __irq OS_TIMER4_ISR (void).
* 描述: 1. Timer4 中断服务程序, 提供 uC/OS 节拍.
* 2. 其它 IRQ 中断服务函数请参照该函数.
********************************************************************************************************
*/
void __irq OS_TIMER4_ISR (void)
{
OSIntEnter();
OSTimeTick(); /* 系统节拍服务程序. */
OSIntExit();
ClearPending (BIT_TIMER4); // 清中断悬挂位.
}
/*
********************************************************************************************************
* End.
********************************************************************************************************
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -