关于STM32G0B1CCT6的flash内存使用注意事项

STM32G0B1CCT6是相对比较新的MCU,属于G系列,不支持标准库,所以下文用的是hal库或者ll库。

首先STM32G0B1CCT6是有256kflash的,每页2k,而规格书里面只提到0-63page,相当于128kflash。
对于后128k的flash其实需要切换bank2才能使用。
下图为STM32G0B1CCT6的flash构成
关于STM32G0B1CCT6的flash内存使用注意事项_第1张图片
然后我们先看正常如果要擦除第一页的代码
FLASH_EraseInitTypeDef My_Flash; //声明 FLASH_EraseInitTypeDef 结构体为 My_Flash
uint32_t PageError = 0; //设置PageError,如果出现错误这个变量会被设置为出错的FLASH地址

HAL_FLASH_Unlock();

My_Flash.TypeErase = FLASH_TYPEERASE_PAGES; //标明Flash执行页面只做擦除操作
My_Flash.Page = 0; //声明要擦除的页
My_Flash.NbPages = 1; //说明要擦除的页数,此参数必须是Min_Data = 1和Max_Data =(最大页数-初始页的值)之间的值
My_Flash.Banks = FLASH_BANK_1;

//调用擦除函数
if(HAL_FLASHEx_Erase(&My_Flash, &PageError) == HAL_OK)
{
//3、对FLASH烧写
//MEM_WRITE(FLASH_SYSTEM_DATA_ADDR, buf, 5);

你可能感兴趣的:(stm32,c语言)