定时器的使用

本文介绍了一种定时器的初始化方法及配置过程,并提供了一个实现精确延时的函数。通过设定匹配寄存器的值来控制定时器中断周期,从而实现特定的功能需求。

定时器的使用

定时器/计数器用来计数外设时钟(PCLK)或外部时钟的周期,可以选择在规定的时间处产生中断或执行其他操作,由4个匹配寄存器的值决定。它也包含4个捕获输入,用来在输入信号变化时捕捉定时器的瞬时值,也可以选择产生中断。


void Timer0Init(void)
{
  T0TC  = 0;                                                      // 定时器设置为0
    T0PR  = 0;                           // 时钟不分频
        T0MCR = 0x03;                                                  // 设置T0MR0匹配后复位T0TC,并产生中断标志
        T0MR0 = (Fpclk / OS_TICKS_PER_SEC);                                              
T0TCR = 0x01;                                                   // 启动定时器
 }

切记:要在使用时复位中断,即T1IR = 1;

延时函数:

void delayMs(DWORD delayinUs)

{

T1TCR = 0x02; /* reset timer */
        T1PR  = 0x00; /* set prescaler to zero */
        T1MR0 = delayInUs * (Fpclk / 1000000);
        T1IR  = 0xff; /* reset all interrrupts */
        T1MCR = 0x04; /* stop timer on match */
        T1TCR = 0x01; /* start timer */

        /* wait until delay time has elapsed
,when on match,the register T1TCR  will be zero*/
        while (T1TCR & 0x01)
        {
            //OSTimeDly(10);
        }
    return;
}
       


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值