[mw_shl_code=c,true]void STMFLASH_Write(u32 WriteAddr,u32 *pBuffer,u32 NumToWrite)
{
FLASH_Status status = FLASH_COMPLETE;
u32 addrx=0;
u32 endaddr=0;
if(WriteAddr<STM32_FLASH_BASE||WriteAddr%4)return;
FLASH_Unlock();
FLASH_DataCacheCmd(DISABLE)
addrx=WriteAddr;
endaddr=WriteAddr+NumToWrite*4;
if(addrx<0X1FFF0000)
{
while(addrx<endaddr)
{
if(STMFLASH_ReadWord(addrx)!=0XFFFFFFFF)
{
status=FLASH_EraseSector(STMFLASH_GetFlashSector(addrx),VoltageRange_3);
if(status!=FLASH_COMPLETE)break;
}else addrx+=4;
}
}
里面的 FLASH_Status status = FLASH_COMPLETE;这句该如何理解啊,想了半个小时想不通[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
额,懂了,谢谢,
还有一个问题
if(addrx<0X1FFF0000) //只有主存储,才需要执行擦除工作!
关于这一条判断语句,假如FLASH不是1024K的容量也是应该如此判断吗?
还是要根据具体容量大小进行判断,假如是一个512K的只有前面8个扇区,是否应该以扇区8的起始地址0x08080000来判断?
一周热门 更多>