以编程方式清除stm32f4-discovery flash

时间:2015-08-31 13:05:09

标签: c++ arm

我在使用stemwin库创建窗口后清除stm32f429发现板闪存时遇到问题。如果我使用下面的代码,闪存将被正确清除:

EraseInitStruct.TypeErase = FLASH_TYPEERASE_SECTORS;
EraseInitStruct.VoltageRange = FLASH_VOLTAGE_RANGE_3;
EraseInitStruct.Sector = FLASH_SECTOR_22;
EraseInitStruct.NbSectors = 1;
HAL_FLASH_Unlock();
uint32_t sectorError = 0;
if(HAL_FLASHEx_Erase(&EraseInitStruct,&sectorError)!=HAL_OK)
{
    return HAL_FLASH_GetError();
}

HAL_FLASH_Lock();

CreateWindow();

但是如果我将CreateWindow()函数置于代码顶部,则不会清除闪存。这是CreateWindow()函数:

WM_HWIN CreateWindow(void)
{
hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate),       _cbDialog, WM_HBKWIN, 0, 0);

hMultiPage = MULTIPAGE_CreateEx(0, -20, 320, 260, WM_GetClientWindow(hWin),   WM_CF_SHOW, 0, 0);
MULTIPAGE_SetSkin(hMultiPage,MULTIPAGE_SKIN_FLEX);

hPage1 = GUI_CreateDialogBox(_aDialogCreate2, GUI_COUNTOF(_aDialogCreate2),  _cbDialogPage1,       WM_UNATTACHED, 0, 0);
MULTIPAGE_AddPage(hMultiPage, hPage1, "Settings");

hPage2 = GUI_CreateDialogBox(_aDialogCreate3, GUI_COUNTOF(_aDialogCreate3), _cbDialogPage2,       WM_UNATTACHED, 0, 0);
MULTIPAGE_AddPage(hMultiPage, hPage2, "Run");

MULTIPAGE_SelectPage(hMultiPage,0);

return hWin;
}

1 个答案:

答案 0 :(得分:0)

这两件事之间无关。 但是,可能存在一个问题,即您要删除GUI所在的扇区(可能是图像或类似图像)。

从技术上讲,这里没有其他选择。

另外,在函数完成后检查“SectorError”变量的值是什么?