FLASH密鑰暫存器解鎖序列無法寫入,數值總是為0。讀寫保護沒有打開,是關閉的,那原因是出在哪?
uj5u.com熱心網友回復:
void get_words(u32 addr, u16 *buf, u8 len)// 讀取對應的數值到指定的FLASH
{
u8 j=0;
while(len--)
{
buf[j++]=(u16)(*(u32*)addr);
addr+=2;
}
}
void save_words(u32 addr, u16* buf, u8 len) //保存對應的陣列到指定的FLASH中
{
FLASH_EraseInitTypeDef FlashEraseInit;
u8 j=0;
u32 SectorError=0;
FlashEraseInit.TypeErase=FLASH_TYPEERASE_SECTORS; //2á3yààDí£?éè??2á3y
FlashEraseInit.Sector=STMFLASH_GetFlashSector(addr); //òa2á3yμ?éè??
FlashEraseInit.NbSectors=1; //ò?′???2á3yò???éè??
FlashEraseInit.VoltageRange=FLASH_VOLTAGE_RANGE_3; //μ??1·??§£?VCC=2.7~3.6V????!!
HAL_FLASH_Unlock(); //?a??
if(HAL_FLASHEx_Erase(&FlashEraseInit,&SectorError)!=HAL_OK)
{
//break;//·¢éú′í?óá?
Flash_Erase |=0x01;
}
else { Flash_Erase &=0xFE; }
//FLASH_ErasePage(addr);
while(len--)
{
FLASH_Program_HalfWord(addr,buf[j++]);
addr+=2;
}
HAL_FLASH_Lock(); //é???
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/30625.html
標籤:單片機/工控
上一篇:MSP430ADC12模塊配置
