设置好唤醒源,可以为 GPIO,也可以为内部定时器,定时器需要设置好唤醒间隔,定时唤醒信 号不可关闭,芯片会定期从睡眠状态被唤醒。如果希望使用 GPIO 作为唤醒源,而不是定时唤醒信 号,可以通过 SYS_RST_CFG.WK_INTV 将定时唤醒间隔设置为最大,并在唤醒中断中做如此判断: 如果是定时唤醒立即再次进入睡眠,如果是 GPIO 唤醒则执行相关操作。GPIO 唤醒可以配合 GPIO 外部中断事件 EXTI 使用。 以下程序以 LKS08x 芯片为例,其他型号具体寄存器位置可能不同。但软件配置流程建议相同 处理。 切换 PLL 时钟的动作建议封装成一个函数来调用。 u32 AFE_REG5_RECORD = 0; u32 AFE_REG6_RECORD = 0; void Switch2PLL(void){ // Turn on PLL/BGP/HRC modules and restore modules state in ANALOG SYS_AFE_REG5 = AFE_REG5_RECORD; //延时等待 PLL 开启后稳定 DelayUs(100); SYS_AFE_REG6 = AFE_REG6_RECORD; // Switch main clock to PLL clock SYS_CLK_CFG = 0x1ff; }
AN8001_v1.0.pdf
(218.25 KB)
|