stm32内部flash操作实例与验证

本文详细介绍了STM32内部Flash的读写操作,包括只能按字节对写入、写前需擦除、不同容量的页擦除大小、以及读取方式。同时,内容还涉及了擦写操作的延时处理和解锁函数的使用。在验证部分,通过分析hex文件头尾,结合Xshell截图展示了实际操作效果。
摘要由CSDN通过智能技术生成

一:FLASH的读写操作
1.stm32内部flash写操作只能是两个byte写入,不能一个byte一个byte的写
2.写之前需要擦除,擦除后数据均为FF
3.内部flash为512kb为大容量,小于512为小容量。在stm32的stm32f10x_flash.c里面FLASH_Status FLASH_ErasePage擦除页函数有区别擦2k还是擦1k,大容量擦2k,小容量擦1k
4. 读可以只读1个字节,例如:(uint8_t)(Address)
读可以只读4个字节,例如:(uint32_t)(Address)
5.擦除和写过程没有加延时函数,因为库函数里面已经有一个确保操作完成的函数。
6.擦写前先调用解锁函数。

#define BaseStartAddr	0x08000000	

uint16_t STMFLASH_ReadHalfWord(uint32_t addr)
{
	rt_kprintf("读取:WriteAddr=%08X,pByte=%08X\n",BaseStartAddr+addr,*(uint32_t*)(BaseStartAddr+addr));
	return *(uint32_t*)(BaseStartAddr+addr);
}	
	
void STMFlashByteWrite(uint32_t WriteAddr,uint32_t pByte)
{	
	FLASH_Unlock();	
	
	FLASH_ErasePage(BaseStartAddr);	
	FLASH_ProgramWord(BaseStartAddr+WriteAddr,pByte);	
	rt_kprintf("写入:WriteAddr=%08X,pByte=%08X\n", BaseStartAddr+WriteAddr, pByte);
	S
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值