完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
前言
不必害怕未知,无需恐惧犯错,做一个Creator! 本文主要介绍STM32_HAL库开发中低功耗唤醒的使用。 一、开发步骤 1.STM32CubeMX配置
2.进低功耗程序编写 void startSleep(uint32_t _RTCsecond) //进入低功耗模式函数 { SystemPower_Config(); HAL_RTCEx_DeactivateWakeUpTimer(&hrtc);//关闭计数器 RTCWakeUp(_RTCsecond);//自定义唤醒计数器 HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);//进入低功耗停机模式 } void SystemPower_Config(void) //进入低功耗时钟配置 { GPIO_InitTypeDef GPIO_InitStructure = {0}; //使能低功耗模式时钟 __HAL_RCC_PWR_CLK_ENABLE(); //关闭所有IO口时钟 __HAL_RCC_GPIOA_CLK_DISABLE(); __HAL_RCC_GPIOB_CLK_DISABLE(); __HAL_RCC_GPIOC_CLK_DISABLE(); __HAL_RCC_GPIOD_CLK_DISABLE(); __HAL_RCC_GPIOH_CLK_DISABLE(); __HAL_RCC_GPIOE_CLK_DISABLE(); } 3.出低功耗程序编写 void initAfterSleep(void) { //各个初始化配置 HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_USART2_UART_Init(); MX_SPI1_Init(); MX_TIM2_Init(); MX_UART4_Init(); MX_RTC_Init(); MX_USART1_UART_Init(); __HAL_UART_ENABLE_IT(&huart4, UART_IT_RXNE); __HAL_UART_ENABLE_IT(&huart1, UART_IT_RXNE); HAL_TIM_Base_Init(&htim2); HAL_TIM_Base_Start_IT(&htim2); //回调函数的初始化非常重要! HAL_UART_MspInit(&huart1); HAL_UART_MspInit(&huart2); HAL_UART_MspInit(&huart4); HAL_SPI_MspInit(&hspi1); } 二、主要函数接口 1. HAL库进入低功耗模式函数 HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); 进入低功耗模式的接口,执行该函数后进入低功耗模式。 2. HAL库唤醒计数器设置函数 RTCWakeUp(RTCsecond); 开发人员可根据需要自定义中断唤醒计数值。 根据已经在STM32CubeMX中配置的Wakeup时钟频率和计数值设置低功耗时间。 3. HAL库RTC唤醒参数配置函数 HAL_RTCEx_SetWakeUpTimer_IT(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock) RTC唤醒的参数进行配置(STM32CubeMX需要进行首次配置)。 对RTC唤醒的时钟和计数值进行配置。 三、注意事项 1. 待机模式唤醒: 1.唤醒形式直接产生中断就能唤醒。 2.唤醒后不会进入中断函数 3.唤醒后程序复位,重新执行 2. 停机模式唤醒: 1.需要对标志位清除,并且时钟要重新配置。 2.唤醒后进入中断函数 3.唤醒后程序从停机的位置继续运行。没有复位,单片机寄存器里的各种变量值仍然保留! 总结 本项目中低功耗唤醒的使用主要可以归纳为: 1.RTC低功耗唤醒参数配置 2.调用void startSleep(uint32_t _RTCsecond)进低功耗模式程序 3.调用void initAfterSleep(void)配置出低功耗模式 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1609 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1540 浏览 1 评论
970 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
681 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1587 浏览 2 评论
1861浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
644浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
515浏览 3评论
528浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
503浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 00:35 , Processed in 0.549049 second(s), Total 48, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号