OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7933|回复: 4

分享 基于PVD 掉电保存数据

[复制链接]

53

主题

567

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2099
金钱
2099
注册时间
2017-2-11
在线时间
306 小时
发表于 2020-12-29 13:32:22 | 显示全部楼层 |阅读模式
本帖最后由 jiangyy 于 2021-3-25 13:27 编辑

  基于掉电保存重要数据,核心在于怎么判断。简单画个草图,分享一下。
   76c590872e32ae1d4abb5aac2d1388c.jpg
  电容的容量大小,取决于掉电保存数据的长短,建议维持时间大于300ms最佳。当PVD掉电到某个阈值就会进入相应的中断。在此期间,可以进行数据保存。一般临时的数据会在RAM中缓存,可以将数据保存在内部flash或外部flash中。当再次上电,可以将内部falsh或外部flash数据拷贝到相应的RAM中(数组或变量)。建议在PVD中断中,不要延时太长。下面是分享的代码:
  1.pvd.c

  1. #include "pvd.h"
  2. #include "stdio.h"
  3. #include "delay.h"

  4. void PWR_PVD_Init(void)
  5. {
  6.         NVIC_InitTypeDef NVIC_InitStructure;
  7.         EXTI_InitTypeDef EXTI_InitStructure;

  8.         NVIC_InitStructure.NVIC_IRQChannel = PVD_IRQn; //使能PVD所在的外部中断通道
  9.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  10.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  11.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  12.         NVIC_Init(&NVIC_InitStructure);

  13.         EXTI_StructInit(&EXTI_InitStructure);
  14.         EXTI_InitStructure.EXTI_Line = EXTI_Line16; //PVD连接到中断线16上
  15.         EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //使能中断模式
  16.         EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; //电压低于阈值时产生中断
  17.         EXTI_InitStructure.EXTI_LineCmd = ENABLE; //使能中断线
  18.         EXTI_Init(&EXTI_InitStructure); //初始
  19.         PWR_PVDLevelConfig(PWR_PVDLevel_7);//设定监控阈值
  20.         PWR_PVDCmd(ENABLE);//使能PVD
  21. }

  22. u8 BKP_Cnt = 0;
  23. void PVD_IRQHandler(void)
  24. {
  25.         EXTI_ClearITPendingBit(EXTI_Line16);//清中断
  26.         BKP_Cnt = RTC_ReadBackupRegister(RTC_BKP_DR4);
  27.         BKP_Cnt++;
  28.         RTC_WriteBackupRegister(RTC_BKP_DR4, (u8)BKP_Cnt);
  29. }
复制代码
2.pvd.h
  1. #ifndef __PVD_H
  2. #define __PVD_H
  3. #include "sys.h"

  4. void PWR_PVD_Init(void);//初始化               
  5. extern u8 BKP_Cnt;
  6. #endif
复制代码

  喜欢的朋友,点个赞。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

250

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2248
金钱
2248
注册时间
2019-8-7
在线时间
364 小时
发表于 2020-12-30 17:16:33 | 显示全部楼层

使用道具 举报

53

主题

567

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2099
金钱
2099
注册时间
2017-2-11
在线时间
306 小时
 楼主| 发表于 2021-2-26 08:51:41 | 显示全部楼层
此帖仅作者可见

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2021-7-31
在线时间
15 小时
发表于 2021-9-6 01:05:34 | 显示全部楼层
此帖仅作者可见

使用道具 举报

5

主题

133

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1782
金钱
1782
注册时间
2015-3-13
在线时间
271 小时
发表于 2022-1-26 20:56:57 | 显示全部楼层
此帖仅作者可见

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 03:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表