Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
STM32L0
STM32L071从deep sleep唤醒之后时钟的问题
发布于 2019-06-20 15:10:01 浏览:3036
订阅该版
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
被浏览
3k
关于作者
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
RT-Thread项目助手v0.2.0 - 支持Env Windows
2
RttreadV5.10上,GD32F450Z RTC时间显示问题
3
rt-smart启动流程分析
4
EtherKit快速上手PROFINET
5
RTThread USB转串口无法接收数据
热门标签
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
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
813
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部