TMR0怎样实现长时间的定时?

看例程这里最长的定时周期只有1s多,如果要实现10分钟甚至10小时的定时,应该怎样做比较合理?


/*********************************************************************
 * @fn      TMR0_TimerInit
 *
 * @brief   定时功能初始化
 *
 * @param   t       - 定时时间,基于当前系统时钟Tsys, 最长定时周期 67108864
 *
 * @return  none
 */
void TMR0_TimerInit(uint32_t t)
{
    R32_TMR0_CNT_END = t;
    R8_TMR0_CTRL_MOD = RB_TMR_ALL_CLEAR;
    R8_TMR0_CTRL_MOD = RB_TMR_COUNT_EN;
}


定时器是26位的,最大数值是2^26。在主频60M的情况下,单次定时最长也就1.1s左右。如果您要定时很长的时间。您可以通过定时器里面计数累加来做到延长。

也可以使用我们tmos任务来实现,tmos任务单位时间为625us,tmos_start_task传入1600则为1s,最长为23小时。


只有登录才能回复,可以选择微信账号登录