硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2030|回复: 7
收起左侧

CPU内部Flash掉电保存数据

[复制链接]

12

主题

36

回帖

72

积分

初级会员

积分
72
发表于 2018-7-25 14:41:20 | 显示全部楼层 |阅读模式
想请教一下,用STM32F429单片机做了一块板子,想实现掉电保存数据的功能。将拨动开关一关,然后重启读取数据,数据没有保存住。
用安富莱V6的板子来测试,发现直接断电,PVD中断保存数据,也没有保存,读取Flash的值是0,但不是整个扇区的值都是0。
如果拨动开关拨的慢一点,会有几次重启后数据是保存住的?
请问下是不是直接断电,速度太快,单片机来不及执行保存数据到内部Flash?有什么办法解决吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107462
QQ
发表于 2018-7-25 15:42:57 | 显示全部楼层
那个时间很短暂的,内部Flash不合适,如果带RTC电池的话,断电进入中断后存到备份RAM区就行,比较方便。
回复

使用道具 举报

12

主题

36

回帖

72

积分

初级会员

积分
72
 楼主| 发表于 2018-7-25 17:32:22 | 显示全部楼层
eric2013 发表于 2018-7-25 15:42
那个时间很短暂的,内部Flash不合适,如果带RTC电池的话,断电进入中断后存到备份RAM区就行,比较方便。

谢谢管理员
回复

使用道具 举报

12

主题

36

回帖

72

积分

初级会员

积分
72
 楼主| 发表于 2018-7-25 20:00:42 | 显示全部楼层
eric2013 发表于 2018-7-25 15:42
那个时间很短暂的,内部Flash不合适,如果带RTC电池的话,断电进入中断后存到备份RAM区就行,比较方便。

备份RAM怎么操作呢?有相关的例程吗?
回复

使用道具 举报

12

主题

36

回帖

72

积分

初级会员

积分
72
 楼主| 发表于 2018-7-25 22:29:54 | 显示全部楼层
已解决
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107462
QQ
发表于 2018-7-26 02:45:28 | 显示全部楼层



ps:补充下,方便后面看此贴的网友,有例程,看ST标准库带的例子就行。
回复

使用道具 举报

12

主题

36

回帖

72

积分

初级会员

积分
72
 楼主| 发表于 2018-7-27 21:18:08 | 显示全部楼层
有相同问题的坛友,可以看下以下链接:https://blog.csdn.net/cp1300/article/details/80539676
其中将 BackupSRAM_Init改成下面程序,
后备SRAM基地址为:#define BKPSRAM_BASE          ((uint32_t)0x40024000) /*!< Backup SRAM(4 KB) base address in the alias region                         */

uint8_t BackupSRAM_Init(void)
{
          RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);//使能电源接口时钟
        PWR_BackupAccessCmd(ENABLE);//后备区域访问使能(RTC+SRAM)
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_BKPSRAM, ENABLE);//备份区SRAM使能//睡眠模式期间的备份 SRAM 接口时钟使能
        PWR_BackupRegulatorCmd(ENABLE);//使能备份调压器,不开启会导致备份SRAM掉电丢失-必须先使能时钟

/*                RCC->APB1ENR|=1<<28;                                        //使能电源接口时钟
        PWR->CR|=1<<8;                                                        //后备区域访问使能(RTC+SRAM)
        SYS_DeviceClockEnable(DEV_BKP,TRUE);        //备份区SRAM使能
        RCC->AHB1LPENR |= BIT18;                                //睡眠模式期间的备份 SRAM 接口时钟使能
        PWR->CSR |= BIT9;                                                //使能备份调压器,不开启会导致备份SRAM掉电丢失-必须先使能时钟*/       
       
        return 1;
}
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107462
QQ
发表于 2018-7-28 00:13:53 | 显示全部楼层
dandelion 发表于 2018-7-27 21:18
有相同问题的坛友,可以看下以下链接:https://blog.csdn.net/cp1300/article/details/80539676
其中将 Ba ...

这个我们V5板子做例子了:
http://www.armbbs.cn/forum.php?m ... &extra=page%3D1

QQ截图20180728001413.png
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-2 10:14 , Processed in 0.183963 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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