在你的代码中,你使用了内置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();
```
通过这样的修改,你应该能够解决电流增加的问题。如果问题仍然存在,你可能需要进一步检查其他因素,如其他外设的唤醒中断是否影响了电流的消耗。
在你的代码中,你使用了内置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();
```
通过这样的修改,你应该能够解决电流增加的问题。如果问题仍然存在,你可能需要进一步检查其他因素,如其他外设的唤醒中断是否影响了电流的消耗。
举报