STM32——FLASH(掉电保存)

发布者:Bby1978最新更新时间:2017-11-01 来源: eefocus关键字:STM32  FLASH  掉电保存 手机看文章 扫描二维码
随时随地手机看文章

今天使用STM32的FLASH进行保存数据,实现掉电保存的功能。

掉电保存:使用FLASH存储时,在每一次数据刷新后,进行一次存储即可。

PS:重新下载时,会刷新保存的数据。

FLASH编程思路:

写入:先执行擦除数据(页擦除||全片擦除),再进行写入操作

写入范围:0x08000000 +程序大小 < 写入地址  + 写入字节 <= flash大小(根据芯片的数据手册可以查看)

flash写入过程:

1,读FLASH_CR的LOCK 

2,FLASH_SR的BSY位,是否有其他编程正在操作

3,设置FLASH_CR的PG位为1

4,指定的地址写入要编程的半字  

5,等待BSY位变为0

6,读出写入的地址并验证数据

flash页擦除过程

1,读FLASH_CR的LOCK  

2,检查FLASH_SR的BSY位,是否有其他编程正在操作

3,置FLASH_CR的PER = 1;  

4,用FLASH_AR选择要擦除的页

5,置FLASH_CR的STRT = 1  

5, 等待BSY位变为0

6,读出验证擦除页的数据

附上程序源码:

链接:http://pan.baidu.com/s/1eSDu7Fs 密码:ksf0


关键字:STM32  FLASH  掉电保存 引用地址:STM32——FLASH(掉电保存)

上一篇:STM32CubeMX学习笔记:printf()输出数据
下一篇:STM32——JLINK下载器刷固件

推荐阅读最新更新时间:2024-03-16 15:42

printf重定向到stm32串口
一、什么是重定向 在程序的调试过程中,除了那些高大上的调试手段外,printf无疑是我们最熟悉最顺手的调试方法。通过使用printf,我们可以很方便很直观的获取当前程序的运行状态。 printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。但是在单片机开发中,一般情况下并不存在标准输出设备,因此我们需要将printf的输出信息重定向,也就是输出到其他输出设备中去。 二、在stm32平台上实现重定向的方式有两种,重定向至UART,或者通过JTAG的SW模式将printf重定向至SWO引脚输出。 首先介绍第一种,重定向至UART,这种方式我们比较熟悉,ST官方提供的固件库中也是使用的这种方法。 代码如下:在对U
[单片机]
STM32 Cubemax(五) —— STM32利用PWM控制42步进电机
前言 42步进电机也是经常使用的一类电机,其控制方法也十分简单,但如果要用好步进电机,还需要了解一些前瞻知识,这篇文章除了介绍其控制方法外,还会介绍其中一些必备的知识。 一、硬件准备 42步进电机 42步进电机在市面上还是挺常见的,每一款都大同小异。而市面上最为常用的为两相四线制的步进电机。两相即AB相,四线即步进电机引出来的四根线。 对于引出四线的步进电机,比较关键的是怎么区分哪两根线是同一相的,对于如何接线来说十分重要。 对于一般的万用表,都有一个检测导线两端是否接通的功能,即上图中间的那一档,有个二极管的 一般比较常用的方法是用万用表的通断功能来测量,即上图中间那个带二极管有个声波的那个。用两个表笔两两测量
[单片机]
<font color='red'>STM32</font> Cubemax(五) —— <font color='red'>STM32</font>利用PWM控制42步进电机
STM32时钟配置方法详解
一、在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。 ①HSI是高速内部时钟,RC振荡器,频率为8MHz。 ②HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。 ③LSI是低速内部时钟,RC振荡器,频率为40kHz。 ④LSE是低速外部时钟,接频率为32.768kHz的石英晶体。 ⑤PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。 二、在STM32上如果不使用外部晶振,OSC_IN和OSC_OUT的接法:如果使用内部RC振荡器而不使用外部晶振,请按照下面方法处理: ①对于
[单片机]
STM32——ARM与STM32之间的联系
ARM与STM32之间的联系 stm32是基于ARM内核的一种控制器,是包含与被包含的关系。 ARM(STM32)
[单片机]
<font color='red'>STM32</font>——ARM与<font color='red'>STM32</font>之间的联系
搞定新唐error:flash download failed - cortex-m0
新唐Cortex-M0下载Flash失败-设置正确但下载失败的一个解决方法 今天在调试程序时、DEMO板下载几次后就提示Flash下载失败: Keil v4里面的设置都没有动过、不可能被修改。 此时、使用新唐的ICP Programming Tool软件来链接芯片,提示需要擦除芯片,然后才能下载。 这下、发现了在Keil v4里面老是下载失败的解决方法了: 在Keil v4里面、先擦除芯片:
[单片机]
搞定新唐error:<font color='red'>flash</font> download failed - cortex-m0
STM32常用数据类型分析
stdint.h /* exact-width signed integer types */ typedef signed char int8_t; //有符号8位 typedef signed short int int16_t; typedef signed int int32_t; typedef signed __INT64 int64_t; /* exact-width unsigned integer types */ typedef unsigned char uint8_t; //也就是常用的u8无符号8位 **char默认类型** typedef
[单片机]
STM32单片机通用定时器的编程设计
一、STM32通用定时器原理 STM32系列的CPU,有多达8个定时器,其中TIM1和TIM8是能够产生三对PWM互补输出的高级定时器,常用于三相电机的驱动,它们的时钟由APB2的输出产生。其它6个为普通定时器,时钟由APB1的输出产生。 下图是STM32参考手册上时钟分配图中,有关定时器时钟部分的截图: 从图中可以看出,定时器的时钟不是直接来自APB1或APB2,而是来自于输入为APB1或APB2的一个倍频器,图中的蓝色部分。 下面以通用定时器2的时钟说明这个倍频器的作用:当APB1的预分频系数为1时,这个倍频器不起作用,定时器的时钟频率等于APB1的频率;当APB1的预分频系数为其它数值(即预分频系数为2、4、8或
[单片机]
<font color='red'>STM32</font>单片机通用定时器的编程设计
JTAG口及其对F1aSh的在线编程
随着嵌入式技术的发展,在一些高端的掌上设备中,都使用了Flash芯片,如Compaq的iPAQ、联想的天祺系列等产品。但对于研发人员来说,在开发阶段需要大量的程序调试,就意味着要对F1ash进行擦除和改写的工作,因此,如何对F1ash进行在线编程是问题的关键所在。本文介绍一种通过JTAG对Flash进行的在线编程方法。 1 JTAG简介 JTAG(Joint Test Action Group)是1985年制定的检测PCB和IC芯片的一个标准,1990年被修改后成为IEEE的一个标准,即IEEEll49.1-1990。通过这个标准,可对具有JTAG口芯片的硬件电路进行边界扫描和故障检测。 具有JTAG口的芯片都有如下JTAG
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved