当前位置:网站首页>STM32通过串口进入和唤醒停止模式
STM32通过串口进入和唤醒停止模式
2022-07-06 16:03:00 【Kay Note】
STM32 具有运行、睡眠、停止和待机四种工作模式。上电复位后 STM32 处于运行状态,当内核不需要继续运行,就可以选择进入后面的三种低功耗模式降低功耗,这三种模式中,电源消耗不同、唤醒时间不同、唤醒源不同,我们可以根据不同的应用需求,选择最佳的低功耗模式。
睡眠模式:CM3 内核停止,外设仍然运行,此功耗是最高的。
停止模式:所有时钟都停止,此功耗较低,典型大概在20uA左右 。
待机模式:1.8V 内核电源关闭,此功耗最低,典型大概在2uA左右。
在实际的开发运用时,我们常用的低功耗模式是停止模式,唤醒方式是任一外部中断。本文主要讲的是通过串口唤醒和进入停止模式,要实现通过串口唤醒停止模式,就需要用到外部中断。把串口Rx引脚设置成外部中断,上升沿触发,这样在串口收到数据时就会触发外部中断,从而唤醒停止模式。相关代码如下
首先是配置串口接收端为外部中断:
/*************************************************
Function: void EXIT_UART_Init(void)
Description: 外部中断初始化
Calls:
Called By:
Input: 无
Output: 无
Return:
Others:
*************************************************/
void EXIT_UART_Init(void)
{
LL_EXTI_InitTypeDef EXTI_InitStruct = {0};
/* GPIO Portd Clock Enable */
LL_IOP_GRP1_EnableClock(LL_IOP_GRP1_PERIPH_GPIOA);
/**/
LL_EXTI_SetEXTISource(LL_EXTI_CONFIG_PORTA, LL_EXTI_CONFIG_LINE3);
/**/
EXTI_InitStruct.Line_0_31 = LL_EXTI_LINE_3;
EXTI_InitStruct.LineCommand = ENABLE;
EXTI_InitStruct.Mode = LL_EXTI_MODE_IT;
EXTI_InitStruct.Trigger = LL_EXTI_TRIGGER_RISING;
LL_EXTI_Init(&EXTI_InitStruct);
/**/
LL_GPIO_SetPinPull(GPIOA, LL_GPIO_PIN_3, LL_GPIO_PULL_DOWN);
/**/
LL_GPIO_SetPinMode(GPIOA, LL_GPIO_PIN_3, LL_GPIO_MODE_INPUT);
/* EXTI interrupt init*/
NVIC_SetPriority(EXTI2_3_IRQn, 1);
NVIC_EnableIRQ(EXTI2_3_IRQn);
}
然后使能相关时钟,进入停止模式。
/*************************************************
Function: void enter_stop_mode(void)
Description: 进入停止模式
Calls:
Called By:
Input: 无
Output: 无
Return:
Others:
*************************************************/
void enter_stop_mode(void)
{
EXIT_UART_Init(); //配置串口引脚为外部中断
__HAL_RCC_PWR_CLK_ENABLE(); //使能 PER 时钟
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); //进入 stop 模式
}
在低功耗模式唤醒之后,默认使用的系统时钟是HSI,所以就需要重新配置系统时钟。为了方便这里直接使用了复位系统的操作,如果在实际的项目中需要保持外部的IO口状态不变,就不能使用系统复位命令,需要重新配置系统时钟和其他外设时钟。
/*
************************************************************
* 函数名称: void exit_stop_mode(void)
*
* 函数功能: 系统复位
*
* 入口参数: 无
*
* 返回参数: 无
*
* 说明:
************************************************************
*/
void exit_stop_mode(void)
{
__set_FAULTMASK(1); //关闭所有中断
NVIC_SystemReset();
}
边栏推荐
- [system analyst's road] Chapter 7 double disk system design (service-oriented development method)
- Without CD, I'll teach you a trick to restore the factory settings of win10 system
- 基础图表解读“东方甄选”爆火出圈数据
- Detailed explanation of regular expression (regexp) in MySQL
- 新手问个问题,我现在是单机部署的,提交了一个sql job运行正常,如果我重启了服务job就没了又得
- Gpt-3 is a peer review online when it has been submitted for its own research
- Entropy information entropy cross entropy
- 同一个作业有两个source,同一链接不同数据库账号,为何第二个链接查出来的数据库列表是第一个账号的
- Microsoft win11 is still "unsatisfactory". Multi user feedback will cause frequent MSI crashes
- PDF批量拆分、合并、书签提取、书签写入小工具
猜你喜欢
js對JSON數組的增删改查
Docker starts MySQL and -emysql_ ROOT_ Password = my secret PW problem solving
JDBC programming of MySQL database
B站大佬用我的世界搞出卷积神经网络,LeCun转发!爆肝6个月,播放破百万
云原生(三十二) | Kubernetes篇之平台存储系统介绍
Detailed explanation of regular expression (regexp) in MySQL
leetcode:236. The nearest common ancestor of binary tree
After 3 years of testing bytecan software, I was ruthlessly dismissed in February, trying to wake up my brother who was paddling
Cover fake big empty talk in robot material sorting
PDF批量拆分、合并、书签提取、书签写入小工具
随机推荐
Summary of three methods for MySQL to view table structure
Oracle对表进行的常用修改命令
Résumé des connaissances de gradle
CRMEB 商城系统如何助力营销?
The programmer refused the offer because of low salary, HR became angry and netizens exploded
Is the more additives in food, the less safe it is?
达晨史上最大单笔投资,今天IPO了
Cloud native (32) | kubernetes introduction to platform storage system
Use mitmproxy to cache 360 degree panoramic web pages offline
亚朵三顾 IPO
If the request URL contains jsessionid, the solution
Without CD, I'll teach you a trick to restore the factory settings of win10 system
The problem of ASP reading Oracle Database
spark调优(二):UDF减少JOIN和判断
Gradle知識概括
Experiment 4: installing packages from Gui
Restoration analysis of protobuf protocol of bullet screen in station B
Face recognition class attendance system based on paddlepaddle platform (easydl)
Computer reinstallation system teaching, one click fool operation, 80% of people have learned
《数字经济全景白皮书》保险数字化篇 重磅发布