一: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