完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
需要实现的功能:外部用1个按键用于开启MCU的内部RTC,用于1S唤醒1次停止模式状态下的mcu。这个按键再按一下可以关闭MCU内部的RTC,使MCU一直在停止模式。
遇到的问题:按键开启MCU的内部RTC时,如果在1S内RTC触发唤醒中断前关闭RTC,再让MCU进入停止模式,此时MCU的耗电是0.8ua。如果让RTC触发了触发了1次唤醒中断,再去关闭RTC,再让MCU进入听停止模式,此时MCU的耗电是2.3ua。像问一下这到底是什么问题?是我关闭RTC的方法有误吗?下面是我用6行关闭RTC的代码。 HAL_RTC_DeInit( Inside_Rtc); __HAL_RCC_RTC_DISABLE(); HAL_NVIC_DisableIRQ(RTC_IRQn); __HAL_RTC_WAKEUPtiMER_CLEAR_FLAG( Inside_Rtc, RTC_FLAG_WUTF); __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG(); __HAL_RCC_LSE_CONFIG(RCC_LSE_OFF); |
|
相关推荐
1个回答
|
|
在你的代码中,你使用了内置RTC的HAL驱动程序来关闭RTC,并且禁用了RTC时钟。然而,HAL_RTC_DeInit()函数不仅仅关闭RTC,还会重置RTC的寄存器和状态。因此,当你再次启用RTC时,它将处于初始状态,并且可能会触发唤醒中断,导致电流增加。
解决此问题的方法是,在关闭RTC之前,首先取消RTC的唤醒功能。你可以通过以下步骤完成: 1. 使用HAL_RTCEx_DeactivateWakeUpTimer()函数来禁用RTC的唤醒功能。 2. 关闭RTC时关掉RTC中断,以防止触发唤醒中断。你可以使用HAL_RTC_Alarm_Deactivate()函数来关闭RTC的闹钟中断。 3. 最后,关闭RTC并禁用RTC时钟。 下面是修正后的代码示例: ``` // 禁用RTC的唤醒功能 HAL_RTCEx_DeactivateWakeUpTimer(&Inside_Rtc); // 关闭RTC的闹钟中断 HAL_RTC_Alarm_Deactivate(&Inside_Rtc, RTC_ALARM_A); // 关闭RTC并禁用RTC时钟 HAL_RTC_DeInit(&Inside_Rtc); __HAL_RCC_RTC_DISABLE(); ``` 通过这样的修改,你应该能够解决电流增加的问题。如果问题仍然存在,你可能需要进一步检查其他因素,如其他外设的唤醒中断是否影响了电流的消耗。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1386 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1377 浏览 1 评论
801 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
574 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1414 浏览 2 评论
1764浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
497浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
432浏览 3评论
420浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
397浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-3 00:26 , Processed in 0.671114 second(s), Total 50, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号