使用官方例程中的时钟初始化函数
void App_SysClkInit(void)
{
stc_sysctrl_clk_cfg_t stcClkCfg;
//CLK INIT
stcClkCfg.enClkSrc = SysctrlClkRCH;
stcClkCfg.enHClkDiv = SysctrlHclkDiv1;
stcClkCfg.enPClkDiv = SysctrlPclkDiv1;
Sysctrl_ClkInit(&stcClkCfg);
//使能RCL
Sysctrl_ClkSourceEnable(SysctrlClkRCL, TRUE);
}
低功耗定时器初始化函数,也是例程中的,使用内部低速的时钟RCL的话,arr寄存器设置为0的话,0到65535定时在2S
static void App_LPTimer0Init(void)
{
stc_lptim_cfg_t stcLptCfg;
DDL_ZERO_STRUCT(stcLptCfg);
///< 使能LPTIM0 外设时钟
Sysctrl_SetPeripheralGate(SysctrlPeripheralLpTim, TRUE);
stcLptCfg.enGate = LptimGateLow;
stcLptCfg.enGatep = LptimGatePLow;
stcLptCfg.enTcksel = LptimRcl;
stcLptCfg.enTogen = LptimTogEnLow;
stcLptCfg.enCt = LptimTimerFun; //计数器功能
stcLptCfg.enMd = LptimMode2; //工作模式为模式1:无自动重装载16位计数器/定时器
stcLptCfg.u16Arr = 0; //预装载寄存器值
Lptim_Init(M0P_LPTIMER, &stcLptCfg);
Lptim_ClrItStatus(M0P_LPTIMER); //清除中断标志位
Lptim_ConfIt(M0P_LPTIMER, TRUE); //允许LPTIMER中断
EnableNvic(LPTIM_IRQn, IrqLevel0, TRUE);
}
中断处理函数,就是打印一句话
void LpTim0_IRQHandler(void)
{
if (TRUE == Lptim_GetItStatus(M0P_LPTIMER))
{
Lptim_ClrItStatus(M0P_LPTIMER);//清除LPTIMER0的中断标志位
LogPrint("inter interrupt\r\n");
}
}
|