如今,很多单片机都有低功耗模式,中科芯CKS32 32位MCU也不例外。在系统或电源复位以后,MCU处于运行状态。运行时的CPU 时钟由HCLK为提供,内核执行程序代码。当CPU不需继续运行时,可以利用多个低功耗模式来节省功耗,用户需要根据低电源消耗,快速启动时间和可用的唤醒源等条件,选定一个不错的低功耗模式。
还可以通过在运行时降低系统时钟和关闭APB和AHB总线上未被使用的外设的时钟来降低功耗。但是待机模式下功耗低的,进入待机模式和退出待机模式的条件是什么,以及用到的相关的寄存器是哪些。以采用WKUP引脚唤醒为例,进入及退出待机模式的步骤和相关函数如下:
1、使能电源时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); //使能 PWR外设时钟
2、配置置 WKUP引脚作为唤醒源
PWR_WakeUpPinCmd(ENABLE); //使能唤醒管脚功能
3、设置 SLEEPDEEP 位,设置PWR_CR的PDDS 位,执行WFI 指令,进入待机模式
PWR_EnterSTANDBYMode();//进入待机模式,库函数已进行相关操作
通过以上步骤即可进入待机模式,并且当WKUP引脚(PA0)有上升沿时就会唤醒MCU。可以把PA0引脚配置成外部中断,这样MCU一旦唤醒就可以进入中断们可以做进一步的判断,比如是不是误触发或者持续多久才正式开机,不满足条件仍然进入低功耗模式等。