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

📄 timer.c

📁 这是一个实时的嵌入式操作系统的源代码
💻 C
字号:
/*
* file:
*       timer.c
* description:
*       timer controller code.
*/

void timer_ctrl_init(unsigned long pclk, int ms)
{
    rTCON &= ~(0x0f0f);
    /* TCLK = 2M */
    rTCFG0 &= ~(0xff);
    rTCFG0 |= (unsigned int)(pclk/2000000) - 1;
    /* TCLK / 2  = 1M */
    rTCFG1 &= ~(0xff);

    rTCNTB0 = ms * 1000 - 1;
    rTCMPB0 = 0;
    rTCNTB1 = 0xffff;
    rTCMPB1 = 0;

    rTCON  |= (0x0b0b);
    rTCON  &= ~(0x0f0f);
}


int timer_ctrl_get_irq(void)
{
    int bit, irq;

    bit = BIT_TIMER0;
    for(irq=0; irq<32; irq++)
    {
        if(bit & 0x1)
            break;
        bit >>= 1;
    }

    return irq;
}


unsigned int timer_ctrl_get_count(void)
{
    /* resolution of 1us */
    return rTCNTO0;
}


void timer_ctrl_start(void)
{
    /* Start timer */
    rTCON &= ~(0x0f0f);
    rTCON |= (0x0909);
}


void timer_ctrl_udelay(unsigned long usec)
{
    unsigned long now, time = 0;
    unsigned long last = rTCNTO1;

    while(time < usec)
    {
        now = rTCNTO1;
        if(now <= last)
            time += last - now;
        else
            time += 0x10000 - last - now;
        last = now;
    }
}


/* end of file */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -