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

📄 timer.c

📁 一个基于ARM9的操作系统, 实现了很多的功能,包括内存管理,进程创建等
💻 C
字号:
/*
* file:
*       timer.c
* description:
*       timer controller code.
*/

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

    rTCNTB0 = (ms * 1000) - 1;
    rTCMPB0 = 0;

    rTCON  |=  (0x0b);
    rTCON  &= ~(0x0f);
}


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_load_value(void)
{
    /* resolution of 1us */
    return rTCNTB0 + 1;
}


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


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


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

    while(time < usec)
    {
        now = rTCNTO0;
        if(now <= last)
            time += last - now;
        else
            time += rTCNTB0 + last - now + 1;
        last = now;
    }
}


/* end of file */

⌨️ 快捷键说明

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