STM32之Flash

发布者:清新时光最新更新时间:2024-10-17 来源: cnblogs关键字:STM32  Flash 手机看文章 扫描二维码
随时随地手机看文章

1. 在默认情况下,只有执行FLASH设置(延迟,预取指,半周期)的函数式允许执行的。 

如果想要执行FLASH编写/擦除/保护函数,必须在文件“stm32f10x_conf.h”中定义_FLASH_PROG如下: 

#define _FLASH_PROG 

2.按照不同容量,存储器组织成32个1K字节/页(小容量)、128个1K字节/页(中容量),万利板子是中容量

       #define FLASH_PAGE_SIZE    ((u16)0x400)      //一页为1024个字节

3.

  1. /* Get pages write protection status */

  2. WRPR_Value = FLASH_GetWriteProtectionOptionByte();

  3. ProtectedPages = WRPR_Value & 0x000000C0; //后面要对24页到27页,28页到31页进行操作,所以要获得其对应的写保护状态


  4. #ifdef WriteProtection_Disable

  5.   if (ProtectedPages == 0x00)

  6.   {/* Pages are write protected */


  7.     /* Disable the write protection */

  8.     FLASHStatus = FLASH_EraseOptionBytes();


  9.     /* Generate System Reset to load the new option byte values */

  10.     NVIC_GenerateSystemReset();

  11.   }

  12. #else

  13.  #ifdef WriteProtection_Enable

  14.   

  15.   if (ProtectedPages != 0x00)

  16.   {/* Pages not write protected */

  17.     

  18.     /* Enable the pages write protection */

  19.     FLASHStatus = FLASH_EnableWriteProtection(FLASH_WRProt_Pages24to27 |FLASH_WRProt_Pages28to31);    

  20.     

  21.     /* Generate System Reset to load the new option byte values */

  22.     NVIC_GenerateSystemReset();

  23.   }

  24.  #endif

  25. #endif


关键字:STM32  Flash 引用地址:STM32之Flash

上一篇:STM32之PVD电压检测
下一篇:STM32低功耗Demo

推荐阅读最新更新时间:2026-03-03 15:27

STM32中的一些小坑-ADC通道设置-写FLASH
最近做项目用到STM32F051的片子,遇到了两个小坑。 我的一个项目,需要ADC采集。两路ADC输入通道。PA0-ADCIn0; PA1-ADCIn1. 一开始想使用最简单的方式,单次转换。第一次采In0, 第2次采集In1. STM32F0 的ADC库里面提供了ADC转换的函数:如下: ADC_StartOfConversion(ADC1); while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET); AdcProValRig =ADC_GetConversionValue(ADC1); ADC_StopOfConversion(ADC1);
[单片机]
stm32_015_stm32工程设置程序下载到flash
1.选择对应cpu型号 2.设置程序的存储地址和预留大小(不能超过总大小),还有设置RAM的地址和大小。 3.设置输出hex文件 4.安装好j-link驱动后,设置debug选项 5.设置Utilities选项 至此,变可以下载或者debug了。
[单片机]
stm32_015_stm32工程<font color='red'>设置</font>程序下载到<font color='red'>flash</font>中
FLASH地址线接线原理及设置小结
0.外部存储器有24位存储空间。重映射后定位于0x400000-0xFFBFFFFF之间。 1.8位存储器地址A0-A23有效;16为存储器地址A1-A23有效 2.NCS0所选的器件复位后被映射在地址0X00,复位后(NRST释放)系统有NCS0连接的存储器启动。若存储器为8位,则BMS为1;若存储器为16位,则BMS位0。 3.RAM存储器复位后定位于0x300000。重映射后定位于0x0。 4.扩展存储器位置由片选寄存器EBI_CSRx决定。 5.存储器重映射后存储器定位方法。片选寄存器0(CHIPSELECT REGISTER 0)的EBI_BA位包含base addres 的最高位,例如:flash_bas
[单片机]
STM32 Flash对齐技巧详解
这行代码 uint32_t aligned_address = (address + 3) & ~0x03; 是一个经典的位运算技巧,用于将任意地址值向上取整为 4 的倍数。下面从原理到示例详细解释: 一、核心目标:向上对齐到 4 的倍数 对齐需求:STM32 的 32 位 Flash 写入要求地址必须是 4 的倍数(如 0x08010000、0x08010004) 向上取整:无论输入地址是否已经对齐,都返回大于等于该地址的最小 4 的倍数 例如: 输入 0x08010001 → 输出 0x08010004 输入 0x08010004 → 输出 0x08010004(已对齐,保持不变) 二、位运算拆解:(address +
[单片机]
STM32 flash 日志系统设计
本文简要介绍一下本人在Cortex-M3系统的STM32F10x芯片上开发的一个日志文件系统(与其说是系统,不如说是小小的库)。该库的特点是将在STM32F10x芯片上处理数据(历史记录)变得简单可靠。因为我所做的项目基本上都为监控系统,需要记录各种各样的日志,并可随时上传至中心服务器。利用该库就可以很容易的使用该接口完成数据的初始化、读取、写入和删除。而且随着该库的应用,稳定性也得到了验证,应用到其它项目中也更有底气了。本库分两部分,一部分支持内部FLASH,一部分支持外部FLASH。由于硬件设计的成本考虑,我们经常需要考虑使用内部FLASH或者外部FLASH的情况,在存储数据量不大,而选择的芯片内部FLASH空间足够时,就可以
[单片机]
stm32内部Flash的读写操作
stm32的产品都有内置Flash,而且不同系列的产品其内置Flash的大小不尽相同,结构上也有差异,本文将对stm32f07x,stm32f10x,stm32f40x的内置Flash结构,以及如何进行读写操作做一个介绍。 一、特性与构成 1.stm32f07x系列 2、stm32f10x系列               3、stm32f40x系列    二、对内部Flash的读写操作  2.1 stm32不同系列的产品,内部Flash的特性与构成确实存在一定的差异,但是对于读写操作,步骤一致,比如要往内部flash写入数据,需要几个步骤:   ①、解锁flash   ②、擦
[单片机]
<font color='red'>stm32</font>内部<font color='red'>Flash</font>的读写操作
如何优雅地解决STM32Flash写保护的问题?
本文介绍了如何解决STM32芯片Flash写保护导致无法下载程序,无法在线调试的问题;如果您遇到相同的问题,希望本文可以带来一些帮助; 1 FLASH的写保护 如果对Flash设置了写保护,那就无法对Flash进行编程和擦除。 在开发STM32的时候,如果出现这种情况,通常仿真器都支持对Flash进行解锁,像jlink,stlink等仿真器都支持这个功能。 2 错误提示 在使用MDK进行调试的时候,出现报错 ==Flash Timeout.Reset Target and try it again==,具体如下图所示; 折腾了一番之后,并没有解决问题,因为使用的仿真器是stlink,因此下载了stlink utility尝试
[单片机]
stm32中将结构体数据写到内部Flash时遇到的问题
在一次写代码的过程中,想把一个结构体的数据写到stm32单片机内部代码没有用到的空闲Flash,结构体开始时这样的: //#pragma pack(1) typedef struct { u8 DeviceAddr;//设备地址 LEDMODE LED_Mode; //LED 控制模式 BAUTRARE Baudrate; //串口波特率 u16 CRC16; //CRC校验 }SYSTEM_CONFIG; //#pragma pack() SYSTEM_CONFIG SystemConfig; LEDMODE和BAUTRARE是定义好的两个枚举类型,开始时发现同样的数据,在两次不同的CRC校验中得到的校验
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved