如何控制CH32V103进入睡眠模式以及对其进行中断唤醒操作

描述

CH32V103系列是以青稞V3A处理器为核心的32位通用MCU,该处理器是基于RISC-V开源指令集设计。 片上集成了时钟安全机制、多级电源管理、通用DMA控制器。 此系列具有1路USB2.0主机/设备接口、多通道12位ADC转换模块、多通道TouchKey、多组定时器、多路IIC/USART/SPI接口等丰富的外设资源。

本章教程主要讲述如何控制CH32V103进入睡眠模式以及对其进行中断唤醒操作。

1、PWR-睡眠模式简介及相关函数介绍

在系统复位后,微控制器处于正常工作状态(运行模式),此时可以通过降低系统主频或者关闭不用外设时钟或者降低工作外设时钟来节省系统功耗。 如果系统不需要工作,可设置系统进入低功耗模式,并通过特定事件让系统跳出此状态。

微控制器目前提供了 3 种低功耗模式,从处理器、外设、电压调节器等的工作差异上分为:

睡眠模式:内核停止运行,所有外设(包含内核私有外设)仍在运行。

停止模式:停止所有时钟,唤醒后系统继续运行。

待机模式:停止所有时钟,唤醒后微控制器复位(电源复位)。

在睡眠模式下,所有的IO引脚都保持他们运行模式下的状态,所有的外设时钟都正常,所以进入睡眠模式前,尽量关闭无用的外设时钟,以减低功耗。 该模式唤醒所需时间最短。

进入睡眠模式:配置内核寄存器控制位 SLEEPDEEP=0(PFIC系统控制寄存器(PFIC_SCTLR)位2,SLEEPDEEP,控制系统的低功耗模式:1为deepsleep,0为sleep),电源控制寄存器 PDDS=0,LPDS 决定内部调压器状态,执行WFI或WFE,可选SEVONPEND 和SLEEPONEXIT(可配合CH32V103应用手册第二章PWR章节寄存器描述和第九章中断和事件进行阅读理解)。

退出睡眠模式:任意中断或者唤醒事件。

关于WFI和WFE方式:

WFI:微控制器被具有中断控制器响应的中断源唤醒,系统唤醒后,将最先执行中断服务函数(微控制器复位除外)。

WFE:唤醒事件触发微控制器将退出低功耗模式。 唤醒事件包括:

(1)配置一个外部或内部的 EXTI 线为时间模式,此时无需配置中断控制器;

(2)或者配置某个中断源,等效为 WFI 唤醒,系统优先执行中断服务函数;

(3)或者配置 SLEEPONPEN 位,开启外设中断使能,但不开启中断控制器中的中断使能,系统唤醒后需要清除中断挂起位。

关于SLEEPONEXIT(PFIC系统控制寄存器PFIC_SCTLR位1,控制离开中断服务程序后,系统状态。1:系统进入低功耗模式;0:系统进入主程序)和SEVONPEND(PFIC系统控制寄存器PFIC_SCTLR位4),可配合CH32V103应用手册第九章中断和事件寄存器描述进行阅读理解:

SLEEPONEXIT:启用:执行 WFI 或 WFE 指令后,微控制器确保所有待处理的中断服务退出后进入低功耗模式。

不启用:执行 WFI 或 WFE 指令后,微控制器立即进入低功耗模式 。

SEVONPEND:启用:所有中断或者唤醒事件都可以唤醒通过执行WFE进入的低功耗。

不启用:只有在中断控制器中使能的中断或者唤醒事件可以唤醒通过执行 WFE 进入的低功耗。

关于CH32V103 PWR睡眠模式具体信息,可参考CH32V103应用手册。CH32V103 PWR标准库函数具体内容如下:

mcu

2、硬件设计

单片机进入睡眠模式之后,需要对其进行中断唤醒,此时将开发板PA0引脚与3.3V引脚连接即可进行中断唤醒。

3、软件设计

本章教程在第四章EXTI基础上进行单片机睡眠模式唤醒,通过PA0接GND进入中断对睡眠模式进行唤醒,关于EXTI部分程序在此不再介绍,主要介绍如何进入睡眠模式并对其进行中断唤醒,其具体程序如下:

main.c文件

mcu

4、下载验证

将编译好的程序下载到开发板并复位,串口打印情况具体如下:

mcu

由上图可知,单片机进入睡眠模式,将PA0引脚与3.3V引脚连接,串口打印如下:

mcu

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分