欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > PVD中断检测掉电

PVD中断检测掉电

2025/5/4 11:02:12 来源:https://blog.csdn.net/2401_85904908/article/details/147678152  浏览:    关键词:PVD中断检测掉电

文章目录

  • 概述
  • 配置
  • 掉电擦写注意

概述

STM32 PVD功能具体可以检测到上电、掉电瞬间,其处理方式有中断响应及事件响应。掉电设置为上升沿触发,上电为下降沿触发在这里插入图片描述

配置

1.开启PVD中断并设置其优先级
2.配置响应中断或事件的阈值电压
3.配置响应模式
在这里插入图片描述
生成工程之后在工程里面进行模式和阈值的配置:

void PVD_config()//掉电监测初始化
{__HAL_RCC_PWR_CLK_ENABLE();HAL_NVIC_SetPriority(PVD_IRQn,0,0);HAL_NVIC_EnableIRQ(PVD_IRQn);PWR_PVDTypeDef sConfigPVD;sConfigPVD.PVDLevel=PWR_PVDLEVEL_7;//level7为2.9V阈值,对于掉电来说阈值越高越快响应sConfigPVD.Mode=PWR_PVD_MODE_IT_RISING  ;//模式为掉电时触发中断HAL_PWR_ConfigPVD(&sConfigPVD);HAL_PWR_EnablePVD();
}

然后将上面的PVD初始化函数放在主函数初始化里面执行,但是要在执行该函数前先延时一段时间,因为上电瞬间MCU供电电压还未稳定,如果不延时一段时间会导致误触发PVD中断,因为我们想要的效果是在掉电的时候触发中断在这里插入图片描述
最后在stm32f1xx.it.c文件中找到其对应的中断服务函数,把要实现的功能如擦写数据放在里面即可:在这里插入图片描述
在这里插入图片描述

void HAL_PWR_PVDCallback(void)
{// 在这里处理掉电中断事件if (__HAL_PWR_GET_FLAG(PWR_FLAG_PVDO) != RESET){// 电压低于阈值,执行掉电处理}else{// 电压高于阈值,执行恢复处理}
}

掉电擦写注意

掉电持续约50ms

FLASH的1页的擦除时间约为10-20ms,写一个字节的时间约几十us
EEPROM如下
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词