void STMFLASH_Write(u32 WriteAddr,u16 *pBuffer,u16 NumToWrite)
{
if(WriteAddr<STM32_FLASH_BASE||(WriteAddr>=(STM32_FLASH_BASE+1024*STM32_FLASH_SIZE)))return;//非法地址
这个判断是否是非法地址的语句少判断了两种非法情况,一个是地址是否为偶数,一个是所有要写入的数据地址是否超出。
我改成下面这样了:
if( (WriteAddr < STM32_FLASH_BASE) || (WriteAddr%2)
||((WriteAddr+2*NumToWrite) >= (STM32_FLASH_BASE+1024*STM32_FLASH_SIZE)))
return;//非法地址
供大家参考。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>