离线
TA的每日心情 | 拍拍 2022-6-27 11:09 |
---|
签到天数: 25 天 [LV.4]
|
有人预言,RISC-V或将是继Intel和Arm之后的第三大主流处理器体系。欢迎访问全球首家只专注于RISC-V单片机行业应用的中文网站
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 sky 于 2021-9-10 17:04 编辑
本章教程主要讲述如何控制CH32V103进入停止模式以及对其进行唤醒操作。
1、PWR-停止模式简介及相关函数介绍
停止模式是在内核的深睡眠模式(SLEEPDEEP)基础上结合了外设的时钟控制机制,并让电压调节器的运行处于更低功耗的状态。此模式高频时钟(HSE/HSI/PLL)域被关闭,SRAM和寄存器内容保持,IO引脚状态保持。该模式唤醒后系统可以继续运行,HSI 称为默认系统时钟。
如果正在进行闪存编程,直到对内存访问完成,系统才进入停止模式;如果正在进行对 APB 的访问,直到对APB访问完成,系统才进入停止模式。
停止模式下可工作模块:独立看门狗(IWDG)、实时时钟(RTC)、低频时钟(LSI/LSE)。
进入:配置内核寄存器控制位SLEEPDEEP=1,电源控制寄存器的PDDS=0,可选LPDS位,执行WFI或WFE,可选SEVONPEND和SLEEPONEXIT。
退出:任一外部中断/事件(在外部中断寄存器中设置)、WKUP 引脚上升沿。
关于CH32V103 PWR-停止模式具体信息,可参考CH32V103应用手册。CH32V103 PWR标准库函数在PWR-睡眠模式章节已介绍,在此不再赘述。
2、硬件设计
单片机进入停止模式之后,需要对其进行唤醒操作,此时将开发板PA0引脚与3.3V引脚连接即可进行唤醒。
3、软件设计
本章教程在第四章EXTI基础上进行单片机停止模式唤醒,通过PA0接3.3V进入中断对停止模式进行唤醒,关于EXTI部分程序在此不再介绍,主要介绍如何进入停止模式并对其进行中断唤醒,其具体程序如下:
main.c文件
- int main(void)
- {
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
- Delay_Init();
- USART_Printf_Init(115200);
- EXTI0_INT_INIT();
- printf("SystemClk:%d\r\n",SystemCoreClock);
- printf("Stop Mode Test\r\n");
- printf("\r\n**********\r\n");
- Delay_Ms(10);
- PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI); //进入停止模式
- printf("\r\n##########\r\n");
- while(1)
- {
- Delay_Ms(1000);
- printf("Run in main\r\n");
- }
- }
复制代码 main.c文件主要包含相关知识信息打印以及进入停止模式和唤醒指令。
4、下载验证
将编译好的程序下载到开发板并复位,串口打印情况具体如下:
由图可知,单片机进入停止模式,将PA0引脚与3.3V引脚连接之后断开,串口打印信息如下:
停止模式.rar附件下载
20、停止模式.rar
(472.1 KB, 下载次数: 12)
链接:https://pan.baidu.com/s/1ynqHtuYik_cjJ9uFtFYcFQ
提取码:bj9c
复制这段内容后打开百度网盘手机App,操作更方便哦
完
|
上一篇: 第二十章:CH32V103应用教程——PWR-待机模式下一篇: 第二十二章:CH32V103应用教程——触摸按键检测(TKEY)
|