【发布时间】:2022-01-03 02:48:30
【问题描述】:
我正在尝试为 STM32G474RE 微控制器设计一个 UART 引导加载程序。我在 Flash 擦除部分代码时遇到问题。在为 STM32G474RE 微控制器设计引导加载程序之前,我尝试了 STM32F767Zi Nucleo 套件。它在该套件上运行良好。 Nucleo套件的代码如下:
if( is_first_block )
{
printf("Erasing the Flash memory...\r\n");
//Erase the Flash
FLASH_EraseInitTypeDef EraseInitStruct;
uint32_t SectorError;
EraseInitStruct.TypeErase = FLASH_TYPEERASE_SECTORS;
EraseInitStruct.Sector = FLASH_SECTOR_5;
EraseInitStruct.NbSectors = 2; //erase 2 sectors(5,6)
EraseInitStruct.VoltageRange = FLASH_VOLTAGE_RANGE_3;
ret = HAL_FLASHEx_Erase( &EraseInitStruct, &SectorError );
if( ret != HAL_OK )
{
break;
}
}
我在这里擦除 2 个扇区。
现在当我尝试使用 STM32G474RE 时,我遇到了以下问题:
- 没有擦除扇区的选项(仅限页面)
- EraseInitStruct.VoltageRange = FLASH_VOLTAGE_RANGE_3;当我编译代码时,此命令出错。 (我检查了 stm32g4xx_hal_flash.h 文件,但没有关于它的信息,而 stm32f7xx_hal_flash.h 文件有关于它的信息。)。我收到以下两个错误:
- 宏FLASH_VOLTAGE_RANGE_3不是#defined
- 结构FLASH_EraseInitTypeDef没有名为VoltageRange的成员
如果有人可以根据他们的经验帮助我并指导我解决这些问题,那就太好了。
【问题讨论】:
-
参见示例
FLASH_EraseProgram,它是库附带的。 STM32G4使用了与STM32F7不同的flash控制器,代码不能随便复制。 -
Flex,能否附上示例链接?
-
您可以找到它here,但它也包含在您的 Cube 安装的 Repository 文件夹下。要查找本地存储库位置,请参阅 Stm32CubeMX 起始页的 Help->Updater Settings。
-
我修改了您的问题:我删除了屏幕截图并使用文本描述了错误消息。在本网站上,不应使用文本的屏幕截图。
标签: assembly stm32 flash-memory stm32cubeide