0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

CHANBAEK 来源:CSDN-借过风景 作者:CSDN-借过风景 2023-01-31 14:43 次阅读

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标准库函数具体内容如下:

poYBAGPYuDCAWd7xAABvB_QFUBw055.png

2、硬件设计

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

3、软件设计

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

main.c文件

pYYBAGPYuDCAa1-mAAB1Odfkb7o580.png

4、下载验证

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

poYBAGPYuDCAYgu4AACJ--Bg0-M484.png

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

pYYBAGPYuDCAL9wWAACdk1q6e0g906.png

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

    关注

    146

    文章

    17117

    浏览量

    350927
  • 睡眠模式
    +关注

    关注

    0

    文章

    9

    浏览量

    6602
  • PWR
    PWR
    +关注

    关注

    0

    文章

    28

    浏览量

    10018
  • RISC-V
    +关注

    关注

    44

    文章

    2270

    浏览量

    46117
  • CH32V103
    +关注

    关注

    1

    文章

    13

    浏览量

    1007
  • ch32
    +关注

    关注

    0

    文章

    73

    浏览量

    637
收藏 人收藏

    评论

    相关推荐

    PSoC3/5如何进入睡眠模式以及唤醒例程

    这个例程演示了如何进入睡眠模式,并通过RTC唤醒
    发表于 11-19 11:58

    【安富莱】【RTX操作系统教程】第21章 RTX低功耗之睡眠模式

    如何退出睡眠模式 由于我们是采用指令WFI进入睡眠模式,那么任意一个被嵌套向量中断控制器NVIC响应的外设
    发表于 02-04 16:39

    请问SIM800A进入睡眠模式进行唤醒有外部引脚进行电平变换进行指示吗?

    SIM800A进入睡眠模式进行唤醒有没有外部引脚进行电平变换进行指示啊?或者在
    发表于 06-12 04:35

    CH32V103基础教程19-PWR-睡眠模式

    本章教程主要讲述如何控制CH32V103进入睡眠模式以及对
    发表于 04-18 15:44

    CH32V103基础教程20-PWR-待机模式

    本章教程主要讲述如何控制CH32V103进入待机模式以及对
    发表于 04-18 15:46

    CH32V103基础教程21-PWR-停止模式

    本章教程主要讲述如何控制CH32V103进入停止模式以及对
    发表于 04-19 16:02

    中断-CH32V103如何关闭全局中断

    即可; 需要注意的是CH32V103 关闭总中断-需要在机器模式操作 CSR 寄存器 mstate,故替换了上面的起始文件后,芯片会一直工作在机器
    发表于 09-26 11:13

    程序进入睡眠模式设置了定时器中断为什么不能唤醒睡眠

    程序进入睡眠模式,设置了定时器中断为什么不能唤醒睡眠?看了手册,上面写的任意中断都可以
    发表于 10-19 06:57

    RISC-V MCU应用开发教程之CH32V103

    教程基于沁恒32位通用增强型RISC-V架构MCU CH32V103,力争全面分析CH32V103的每个外设功能及使用方法,手把手教大家玩转RISC-V MCU应用开发。教程侧重于外设
    发表于 11-18 16:21 18次下载
    RISC-<b class='flag-5'>V</b> MCU应用开发教程之<b class='flag-5'>CH32V103</b>

    APM32F103XC_TMR_关闭DMA进入睡眠模式出现故障

    APM32F103XC_TMR_关闭DMA进入睡眠模式出现故障
    发表于 11-09 21:03 0次下载
    APM32F<b class='flag-5'>103</b>XC_TMR_关闭DMA<b class='flag-5'>进入睡眠</b><b class='flag-5'>模式</b>出现故障

    如何控制CH32V103进入待机模式以及对进行唤醒操作

    CH32V103系列是以青稞V3A处理器为核心的32位通用MCU,该处理器是基于RISC-V开源指令集设计。片上集成了时钟安全机制、多级电源管理、通用DMA控制器。此系列具有1路USB
    的头像 发表于 01-31 14:47 2186次阅读
    如何<b class='flag-5'>控制</b><b class='flag-5'>CH32V103</b><b class='flag-5'>进入</b>待机<b class='flag-5'>模式</b><b class='flag-5'>以及对</b><b class='flag-5'>其</b><b class='flag-5'>进行</b><b class='flag-5'>唤醒</b><b class='flag-5'>操作</b>

    如何控制CH32V103进入停止模式以及对进行唤醒操作

    CH32V103系列是以青稞V3A处理器为核心的32位通用MCU,该处理器是基于RISC-V开源指令集设计。片上集成了时钟安全机制、多级电源管理、通用DMA控制器。此系列具有1路USB
    的头像 发表于 01-31 14:48 1855次阅读
    如何<b class='flag-5'>控制</b><b class='flag-5'>CH32V103</b><b class='flag-5'>进入</b>停止<b class='flag-5'>模式</b><b class='flag-5'>以及对</b><b class='flag-5'>其</b><b class='flag-5'>进行</b><b class='flag-5'>唤醒</b><b class='flag-5'>操作</b>

    ch32v103应用教程 ch32v103c8t6兼容 ch32v103c8t6烧录器

    、低成本的单片机,广泛应用于工业自动化、通信、汽车电子、医疗仪器等领域。它采用的是ARM Cortex-M3内核,具有丰富的外设,支持多种通信协议,操作灵活、功能强大。本文主要介绍CH32V103
    的头像 发表于 08-22 15:19 1883次阅读

    ch32v103和stm32的区别

    和stm32。虽然它们共同作为微处理器的代表,但是它们之间还是有很多不同的。下面就详细地对这两种芯片进行比较和解析。 1、基本介绍 CH32V103是一款以ARM结构为基础,具有射频控制功能,能提供所有常规的数字接口的单片机芯片
    的头像 发表于 08-22 15:48 1479次阅读

    ch32v103与stm32f103的区别

    ch32v103与stm32f103的区别  Ch32v103与STM32f103是两种不同的芯片,虽然它们都是基于ARM Cortex-M3内核的32位微
    的头像 发表于 08-22 15:49 2504次阅读