STM32 Flash 擦除 读写 成功
来源:互联网 发布:户外轨迹软件 编辑:程序博客网 时间:2024/04/27 02:48
参考:http://download.csdn.net/detail/my_friend_ship/4166970
要点: 将数据写入flash之前,每次都要擦除,否则会写入不成功,出现的错误状态为:FLASH_Status=FLASH_ERROR_PG
写入数据成功后可以在Memory 中查看刚刚写入的数据,具体在Memory 窗口中输入:0x08010000,既可以看到此处的数据为 :Data = 0x15041979;//要写入的地址
擦除的起始地址与终止地址
#define StartAddr ((u32)0x08010000)
#define EndAddr ((u32)0x0807ffff)
//擦除
char IAP_Init()//初始化loaded 的flash
{FLASHStatus = FLASH_COMPLETE;
//MemoryProgramStatus = PASSED;
/* Unlock the Flash Program Erase controller */
FLASH_Unlock();
/* Define the number of page to be erased */
NbrOfPage = (EndAddr - StartAddr) / FLASH_PAGE_SIZE;
/* Clear All pending flags */
FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);
/* Erase the FLASH pages */
for(EraseCounter = 0; (EraseCounter < NbrOfPage) && (FLASHStatus == FLASH_COMPLETE); EraseCounter++)
{
FLASHStatus = FLASH_ErasePage(StartAddr + (FLASH_PAGE_SIZE * EraseCounter));
}
return FLASHStatus;
}
int main(void)
{
u8 t;
u8 key;
u16 oldcount=0; //老的串口接收数据值
u16 applenth=0; //接收到的app代码长度
u8 clearflag=0;
u32 FlashDestination;
FLASH_Unlock();
RCC_Configuration();
GPIO_Configuration();
NVIC_Configuration();
SysTick_Config();
UART_init(9600);//串口初始化为9600 5648
IAP_Init();
Data = 0x15041979;//要写入的地址
u32 Address;
while(1)//循环擦除写入
{
{
IAP_Init();
int j,x;
u32 RamSource;
FLASHStatus = FLASH_COMPLETE;
/* Program the data received into STM32F10x Flash */
FLASHStatus=FLASH_ProgramWord(StartAddr, Data);
if( FLASHStatus == FLASH_COMPLETE )
{
Address = StartAddr;
if (*(u32*)Address != Data )
{
/* End session */
RFID_SendString("IAP XXXXX !"); //写入失败
}
else
RFID_SendString("IAP WRITE !");//写入成功
}
}
- STM32 Flash 擦除 读写 成功
- STM32:Flash擦除与读写操作(HAL库)
- flash的读写擦除
- flash的读写和擦除
- stm32 Flash读写[库函数]
- stm32 Flash读写[库函数]
- stm32 Flash读写[库函数]
- stm32 读写内部Flash
- STM32读写内部Flash
- STM32 读写内部Flash
- code-stm32读写FLASH
- STM32 flash读写源程序
- STM32内部flash读写
- stm32 flash读写
- STM32 flash 读写操作
- 实现STM32 Flash的读写
- stm32 读写flash 学习笔记
- STM32内部FLASH读写-通用
- ffmpeg 用 h264库进行编码的编译配置
- 问题 No architectures to compile for (ARCHS=, VALID_ARCHS=armv7 armv7s).
- 【Java TCP/IP Socket】Socket编程知识点总结
- “窗口类、窗口类的对象和窗口”三者的关系
- 【C++自绘控件】如何用GDI+来显示图片
- STM32 Flash 擦除 读写 成功
- Spring MVC 教程,快速入门,深入分析
- 使用绑定变量
- LeetCode 之 Search for a Range
- mongodb集成spring
- mongodb分布式集群架构
- python 获取当前脚本所在路径
- VC++操作word
- poj2407 Relatives 欧拉函数基本应用