由于LPTMR比较简单,所以和PIT的一起放在这里,正好将两种定时器做一个比较。
首先是LPTMER的说明:
LPTRM: Low-power timer 它的特点是可以在KL26Z的所有低功耗模式下允许,可以作为低功耗模式下CPU的唤醒触发器。
下面是LPTMR的配置程序:void lptmrInit (void)
{
SIM_SCGC5 |= SIM_SCGC5_LPTMR_MASK; /* 开启LPTMR时钟*/
LPTMR0_CSR |= ~LPTMR_CSR_TEN_MASK; /* 关闭LPTMR*/
LPTMR0_CSR |= LPTMR_CSR_TCF_MASK; /* 清除标志位 */
LPTMR0_PSR |= LPTMR_PSR_PCS(1); /* 选择LPTMR时钟 */
LPTMR0_CMR = 500; /* 配置LPTMR比较值 */
LPTMR0_CSR |= LPTMR_CSR_TEN_MASK | LPTMR_CSR_TIE_MASK; /* 开启LPTMR,使能中断*/
NVIC_EnableIRQ(LPTimer_IRQn); /* 允许LPTMR中断 */
NVIC_SetPriority(LPTimer_IRQn,3); /* 选择中断优先级 */
__enable_irq(); /* 开启总中断 */
}
在这里要注意红色的地方:1.配置LPTMR之前,首先要关闭定时器。2.在所有寄存器配置好后,再开启中断
这里主函数和中断服务函数就不贴出来了,可以参考之前的LED和中断服务函数的配置。
|