战舰实验Flash模拟EEPROM有个小隐患~

2019-08-16 22:13发布

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;//非法地址

供大家参考。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。