第一范文网 - 专业文章范例文档资料分享平台

STM32-FLASH读写

来源:用户分享 时间:2025/6/9 21:25:35 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

最近在学STM32,要用到内部flash存点数据,一开始在网上看了很多例程,自己写了一个,当到单片机中,一点反应没有,于是又到网上看了又看,找啊找,发现这样的读写内部flash的软件不多,而且说的也不是很明确(个人观点),特地总结了一下,希望对刚学STM32的小伙伴有帮助。

注意:写数据的地址(红色字),如果你的boot1=x,boot0=0,那么你的启动模式是用户闪存存储器,而这个用户闪存存储器的地址就是0x08000000。这个很重要!!!!! 我用的是STM32F103VET6,下面是写内部flash的子程序: #include \

#define STARTADDR 0x0807F800 //主存储器第255页首地址 volatile FLASH_Status FLASHStatus = FLASH_COMPLETE; /*

读内部flash的指定地址的N个字节;

ReadAddress:指定地址。ReadBuf:数据存储指针。ReadNum:读取字节数。 */

void ReadFlashNBtye(uint32_t ReadAddress, uint8_t *ReadBuf, int32_t ReadNum) { int DataNum = 0; ReadAddress = (uint32_t)STARTADDR + ReadAddress; while(DataNum < ReadNum) { *(ReadBuf + DataNum) = *(__IO uint8_t*) ReadAddress++; DataNum++; }

// return DataNum; } /*

向内部flash写入数据

WriteAddress:写数据地址偏移量。WriteData:写入的数据。 */

void WriteFlashOneWord(uint32_t WriteAddress,uint32_t WriteData) { FLASH_Unlock();

FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_WRPRTERR); }

FLASH_FLAG_PGERR |

FLASHStatus = FLASH_ErasePage(STARTADDR);//擦除一页 FLASH_EraseAllPages():擦除全

// 部 FLASH 页面 if(FLASHStatus == FLASH_COMPLETE) { FLASHStatus = FLASH_ProgramWord(STARTADDR + WriteAddress, WriteData); }

FLASH_Lock();

函数调用:例:u8 Temp_Data[4] = { 0 };

WriteFlashOneWord( 0 , 0x12345678 ); delay_ms(10);

ReadFlashNBtye( 0 , Temp_Data , 4 ); delay_ms(10);

这样数据就写入了内部flash,读出时就放在了Temp_Data[4]中。

好了,有问题可以给我发邮件: lddjs@foxmail.com 能力有限,能帮助尽量帮!

搜索更多关于: STM32-FLASH读写 的文档
STM32-FLASH读写.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c3umnv88yde05ej21u7xx_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top