stm32 flash

STM32 Flash具体说明不在这里累赘,想知道的自己百度吧,我拿stm32f103c8t6来举例吧,stm32f103c8t6是中等容量的芯片,flash大小为64K,每页大小为1K,通常我们代码不是很大的话可以直接将我们要保存的东西放到后面几K就可以,MDK软件编译完成是可以看到程序所占内存的。当然这里需要选择全编译。

例如:Program Size: Code=10332 RO-data=336 RW-data=152 ZI-data=3248

上面的大小则可以计算出flash的大小。flash=10332/1024+336/1024=10.4K左右。

地址擦除为一页的,一般定义整个页的地址,stm32 flash起始地址为0x08000000

#define Page60_addr (0x08000000+60*1024)

#define Page62_addr (0x08000000+62*1024)

#ifndef __DATAFLASH_H
#define __DATAFLASH_H

#include "stm32f10x.h"
#include "stm32f10x_flash.h"

void FLASH_WriteByte(uint32_t addr , uint8_t *p , uint16_t Byte_Num);
void FLASH_ReadByte(uint32_t addr , uint8_t *p , uint16_t Byte_Num) ;

#endif

#include "dataflash.h"

/*
功能:向指定地址写入数据
参数说明:addr 写入的FLASH页的首地址
p 被写入变量的地址(数组中的必须是uint8_t类型,元素个数必须是偶数)
Byte_Num 被写入变量的字节数(必须是偶数)
*/
void FLASH_WriteByte(uint32_t addr , uint8_t *p , uint16_t Byte_Num)
{
uint32_t HalfWord;
Byte_Num = Byte_Num/2;
FLASH_Unlock();
FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);
FLASH_ErasePage(addr);
while(Byte_Num --)
{
HalfWord=*(p++);
HalfWord|=*(p++)<<8;
FLASH_ProgramHalfWord(addr, HalfWord);
addr += 2;
}
FLASH_Lock();
}

/*
功能:从指定地址读取数据
参数说明:addr 从FLASH中读取的地址
p 读取后要存入变量的地址(数组中的必须是uint8_t类型)
Byte_Num 要读出的字节数
*/
void FLASH_ReadByte(uint32_t addr , uint8_t *p , uint16_t Byte_Num)
{
while(Byte_Num--)
{
*(p++)=*((uint8_t*)addr++);
}
}

时间: 2024-12-22 12:10:26

stm32 flash的相关文章

stm32——Flash读写

stm32——Flash读写 一.Flash简介 通过对stm32内部的flash的读写可以实现对stm32的编程操作. stm32的内置可编程Flash在许多场合具有十分重要的意义.如其支持ICP(In Circuit Programming,在电路编程:在线编程)特性使得开发人员对stm32可以警醒调试开发,可以通过JTAG和SWD接口对stm32进行程序烧写:支持IAP(In Application Programming,在应用中编程)使得开发人员可以在stm32运行程序的时候对其内部程

W5500 图片嵌入STM32 FLASH笔记(备忘)

方法一:利用winHex软件将图片转为16进制数组存储在FALSH中 1 __root const char HDMV_HTML[]="<html>" 2 "<head>" 3 "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />" 4 "<!-- TemplateBeginEditable name='do

野火STM32 Flash&amp;sd卡模拟U盘

在USB库文件mass_mal.c中添加对flash和sd读写的函数,USB库调用这些函数从而实现模拟U盘的功能 1 //mass_mal.c 2 /* Includes ------------------------------------------------------------------*/ 3 #include "..\User\sdcard\bsp_sdio_sdcard.h" 4 #include "..\User\spi_flash\fatfs_fla

stm32 Flash读写[库函数]

一. stm32的FLASH分为 1.主存储块:用于保存具体的程序代码和用户数据,主存储块是以页为单位划分的, 一页大小为1KB.范围为从地址0x08000000开始的128KB内. 2.信息块   :用于负责由stm32出厂是放置2KB的启动程序(Bootloader)和512B的用户配置信息区 二.操作原则 对Flash 的写入操作要 "先擦除后写入"的原则: stm32的内置flash 编程操作都是以页为单位写入的,而写入的操作必须要以16位半字宽度数据位单位,允许跨页写,写入非

stm32 Flash读写独立函数[库函数]

一. stm32的FLASH分为 1.主存储块:用于保存具体的程序代码和用户数据,主存储块是以页为单位划分的, 一页大小为1KB.范围为从地址0x08000000开始的128KB内. 2.信息块   :用于负责由stm32出厂是放置2KB的启动程序(Bootloader)和512B的用户配置信息区 二.操作原则 对Flash 的写入操作要 “先擦除后写入”的原则: stm32的内置flash 编程操作都是以页为单位写入的,而写入的操作必须要以16位半字宽度数据位单位,允许跨页写,写入非16位数据

STM32 flash 内存分布介绍

摘要: 本文以STM32F103RBT6为例介绍了片上Flash(Embedded Flash)若干问题,包括Flash大小(内存映射).块大小.页面大小.寄存器.这些知识,有利于写Flash驱动. 一.怎么看Flash大小 1.1 通过型号 型号会印在MCU表面,可以通过观察获得,我的是STM32F103RBT6(以下分析基于这个型号),对照下图的STM32产品命名,可知STM32F103RBT6的Flash是128KB. () 图1 Ordering information scheme 1

stm32 flash 存储

转载自: http://bbs.elecfans.com/jishu_388272_1_1.html 说到STM32的FLSAH,我们的第一反应是用来装程序的,实际上,STM32的片内FLASH不仅用来装程序,还用来装芯片配置.芯片ID.自举程序等等.当然, FLASH还可以用来装数据.     自己收集了一些资料,现将这些资料总结了一下,不想看的可以直接调到后面看怎么操作就可以了.FLASH分类       根据用途,STM32片内的FLASH分成两部分:主存储块.信息块. 主存储块用于存储程

[00005]-[2015-08-11]-[00]-[STM32 Flash和SRAM]

STM32 CPU 内部有SRAM和FLASH 两个都可以跑程序,都可以定义变量,一般我们将程序烧写在Flash上面,起始地址0x8000000,而且对于Flash而言,每次写入都是以页为单位写入的 如果在这上面定义变量,变量的赋值操作会变得很麻烦,同时Flash相对于SRAM速度会比较慢,(虽然有DMA帮忙),但是不建议在FLash上面定义变量,所以编译器一般默认定义变量都是 在SRAM上面,也就是0x20000000,开始的地址......

stm32 flash 选择

在keil里面,选择对应芯片的flash,否则有可能在下载仿真时会出现 Eorre:flash download fail 步骤:1.options for target 2.Utilities->settings 3.add 添加对应的flash即可