stm32做PVD掉电检测保存数据到flash

2019-12-12 18:17发布

我用STM32做掉电检测,在检测到掉电后保存数据到flash,我已经检测到掉电了,而且已经进入PVD中断了,保存数据的函数也是执行完了的,但为什么就是数据没有保存成功呢?求大神指点!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
73条回答
Llinuxu
1楼-- · 2019-12-16 14:24
wenunit 发表于 2014-4-24 15:51
2.9V....能完成这么多事啊.
我在外部供电到直流14V的时候开始保存,也只能正常保存两个扇区,
还是上电时先擦 ...

掉电的时候本来就基本只能写,但是写起来还是很快地~~根本不费时间,所以还是可以写很多的
Llinuxu
2楼-- · 2019-12-16 16:45
tuowai 发表于 2014-4-24 15:33
也想学习下PVD检测掉电,方便分享下程序吗,谢谢!

void PVD_NVIC(void)
{
        NVIC_InitTypeDef NVIC_InitStructure;
  
  /* Configure one bit for preemption priority */
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  
  /* Enable the PVD Interrupt */
  NVIC_InitStructure.NVIC_IRQChannel = PVD_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}

void PVD_Init(void)
{
        EXTI_InitTypeDef EXTI_InitStructure;
        PWR_PVDLevelConfig(PWR_PVDLevel_2V9); // 设定监控的阀值
    PWR_PVDCmd(ENABLE); // 使能PVD
      
    EXTI_InitStructure.EXTI_Line = EXTI_Line16; // PVD连接到中断线16上
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //使能中断模式
    //EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//表示电压从低上升到高于阀值时产生中断
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;//表示电压从高下降到低于阀值时产生中断
        //EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;//表示电压上升或下降越过设定阀值时都产生中断
        EXTI_InitStructure.EXTI_LineCmd = ENABLE; // 使能中断线
    EXTI_Init(&EXTI_InitStructure); // 初始化exti寄存器
}

上面的是初始化,在用的时候一定不要忘了RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
这些都做好好就可以直接在PVD_IRQHandler() 函数中调用,希望对你有帮助,如果还有不懂的再问我吧~
Llinuxu
3楼-- · 2019-12-16 17:14
Llinuxu 发表于 2014-4-24 17:08
void PVD_NVIC(void)
{
        NVIC_InitTypeDef NVIC_InitStructure;

不是在 PVD_IRQHandler() 中调用,而是在这个函数中干自己想干的事情~
tuowai
4楼-- · 2019-12-16 21:46
 精彩回答 2  元偷偷看……
Llinuxu
5楼-- · 2019-12-16 22:08
tuowai 发表于 2014-4-26 09:21
谢谢,到时去测试下,一直想着flash频繁写,会影响寿命的问题,这方法要可靠的话,可以减少很多麻烦了 ...

我就是为了延长flash的寿命才这样做的~
tuowai
6楼-- · 2019-12-17 00:27
Llinuxu
想请问下,看了看手册,STM32好象是检测VDD/VDDA,但VDD和VDDA一般都是稳压后的的吧,这样检测到掉电后,还够时间保存数据吗,我的数据会比较多?以前有用过STC的,那时数据量不大,且有专门的引脚检测,用的是检测稳压前的电源,那时数据不多,可以正常保存

一周热门 更多>