硬件环境:AC7801x 通用开发板 ATC-LINK
软件环境:keil 5.23
之前都是使用systick实现的delay函数实现周期性调度,这样会是CPU一直停在延时循环中,浪费CPU资源,我们这里增加timer定时器功能,使用定时器周期性产生时间标志来实现调度。
timer模块应该是我们芯片中最简单的一个模块了,寄存器只有那么寥寥几个,就不过多赘述了。
void Timer_Init(void)
{
CKGEN->PERI_CLK_EN_0 |= CKGEN_PERI_CLK_EN_0_TIMER_EN_Msk; ///<GPIO clock en
CKGEN->PERI_SFT_RST0 |= CKGEN_PERI_SFT_RST0_SRST_TIMER_Msk;
TIMER_CTRL->MCR = 0; //<enable Timer moudle
TIMER_CHANNEL0->LDVAL = 24000 - 1; ///< 1ms
TIMER_CHANNEL0->INIT = 3; ///<enable channel0 and interrupt
NVIC_EnableIRQ(TIMER_CHANNEL0_IRQn);
}
timer.rar
(651.28 KB)
|