STM32H7PVD电源中断实验
STM32PVD服务是针对STM32电源突然断电的情况下使用的功能
目的是为了在stm32供电不足的情况下可以保存重要的程序
实验现象
通过断电插拔usb接线来模拟断电的过程,
来触发PVD中断服务函数(将数据写入到后背寄存器2中),
然后在次上电,用串口打印出写入的数据
前两行数据为下载后程序复位后,后背寄存器给出的数据, 后两行数位为断电后中断服务函数给的写入的数据,
void HAL_PWR_PVDCallback (void)
{
HAL_RTCEx_BKUPWrite(&hrtc, RTC_BKP_DR1, 0x33);
}
void HAL_MspInit(void)
{
PWR_PVDTypeDef sConfigPVD = {0};
__HAL_RCC_SYSCFG_CLK_ENABLE();
HAL_NVIC_SetPriority(PVD_AVD_IRQn, 1, 0);
HAL_NVIC_EnableIRQ(PVD_AVD_IRQn);
sConfigPVD.PVDLevel = PWR_PVDLEVEL_0;
sConfigPVD.Mode = PWR_PVD_MODE_IT_RISING_FALLING;
HAL_PWR_ConfigPVD(&sConfigPVD);
HAL_PWR_EnablePVD();
}
printf("STM32PVD测试\r\n");
printf("数字:%X\r\n",HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_DR1));
|