⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer4.c

📁 S3C2410学习的基础资料 大部分实验源码及工程
💻 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 + -