Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
STM32L0
STM32L071从deep sleep唤醒之后时钟的问题
发布于 2019-06-20 15:10:01 浏览:2937
订阅该版
deep sleep之前sysclk采用的是16M的HSI,但从deep sleep唤醒回到进入normal run模式状态之后就变成了只有2MHz,不知道在哪个地方被修改关闭了HSI。 程序本身没有关闭HSI的操作 ![1.png](/uploads/201906/20/150933dy6em60mblbbyg0z.png)
查看更多
7
个回答
默认排序
按发布时间排序
Tristan_C
2019-06-20
这家伙很懒,什么也没写!
文中是休眠前的,补充休眠到run之后的时钟情况,HSI被关闭了 看了pm组件,里面是有void run(struct rt_pm *pm, uint8_t mode)函数的,但跟踪调试发现似乎没有被调用,不知道这个问题有没有讲究,清大神门指点一二,感激不尽!
Tristan_C
2019-06-20
这家伙很懒,什么也没写!
无奈之下注册了休眠状态改变事件 在事件回调函数中,退出休眠事件RT_PM_EXIT_SLEEP的话,重新配置时钟,就可以正常,HSI恢复运行,但这样的PM模式使用起来就得不停切换配置时钟了,请大神门指点呢。 ```c rt_pm_notify_set(sleep_switch, RT_NULL); void sleep_switch(uint8_t event, uint8_t mode, void *data) { if(RT_PM_ENTER_SLEEP == event) { rt_pin_write(LED0_PIN, PIN_LOW); } else if(RT_PM_EXIT_SLEEP == event) { rt_pin_write(LED0_PIN, PIN_HIGH); SystemClock_Config(); } } ``` 时钟配置函数如下: ```c void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; /**Configure the main internal regulator output voltage */ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); /**Configure LSE Drive Capability */ HAL_PWR_EnableBkUpAccess(); __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW); /**Initializes the CPU, AHB and APB busses clocks */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_LSE; RCC_OscInitStruct.LSEState = RCC_LSE_ON; RCC_OscInitStruct.HSIState = RCC_HSI_ON; RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { Error_Handler(); } /**Initializes the CPU, AHB and APB busses clocks */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) { Error_Handler(); } } ``` ![2nn7.png](https://club.rt-thread.org/uploads/201906/20/162014imfk7bfo2b7o2nn7.png)
Tristan_C
2019-06-20
这家伙很懒,什么也没写!
问题已经解决,STM32L071系列芯片需要手动配置从stop(sleep模式)状态切换到active(run模式)时,采用的时钟时MSI还是HSI,系统初始化的时候时钟配置加上下面这句代码即可 ``` /**Ensure that HSI is wake-up system clock */ __HAL_RCC_WAKEUPSTOP_CLK_CONFIG(RCC_STOP_WAKEUPCLOCK_HSI); ```
水清沙白
2019-06-20
这家伙很懒,什么也没写!
>问题已经解决,STM32L071系列芯片需要手动配置从stop(sleep模式)状态切换到active(run模式)时,采用的 ... --- STM32 的 STOP 模式会把时钟关掉的,唤醒后用用的是一个很低速的时钟,L4 系列上是 HSI,需要重新配置时钟树。
Tristan_C
2019-06-25
这家伙很懒,什么也没写!
我用的是L0,休眠前配置了主时钟为HSI,休眠之后再唤醒默认采用MSI,需要在初始化的时候配置唤醒时钟采用HSI,才可以,要不然RTT的系统tick就出问题了
shao7936626
2019-09-26
这家伙很懒,什么也没写!
L071的BSP哪里来的
ARMVvN
2021-04-09
这家伙很懒,什么也没写!
```c __HAL_RCC_WAKEUPSTOP_CLK_CONFIG(RCC_STOP_WAKEUPCLOCK_HSI); ``` 这句话我在工程中找不到,楼主是否可以提供在哪个.h文件中,或者CUBEMX如何配置才有。 万分感谢
撰写答案
登录
注册新账号
关注者
0
被浏览
2.9k
关于作者
Tristan_C
这家伙很懒,什么也没写!
提问
14
回答
27
被采纳
0
关注TA
发私信
相关问题
1
STM32L0 drv_usart.c的BUG及解决【已解决】
2
stm32l051上移植rtt或求BSP
3
有没有人在STM32L051XX上移植RTT的?
4
有人把stm32L07xx的bsp移到rtt上来了吗?求一个
5
STM32L0的RTC时间非常快
6
STM32L051c8生成nano终端端口选择LPUART1不能正常输出
7
stm32L053C8Tx加入Watchdog后系统一直反复重启
8
STM32L051 ,M0 的 CPULIB 支持 M0+ 的嘛??
9
Nano L071RB Jlink下载程序触发Hard fault
10
STM32L071芯片sleep切换到run之后,需要重新手动配置系统时钟吗
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
ulog
C++_cpp
at_device
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
8
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
3
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部