
STM32 g0系列双BANK芯片,程序运行在BANK1时,想要擦写BANK2,会发生Error或者HardFault。 是否不支持这样的操作? |
基于STM32U575的RFID信息审查系统?
STM32CubeProgrammer 安装错误,请帮忙解决,谢谢
STM32CubeMX 配置STM32G070RBT6TR时无法使能PVD中断
STM32G070RBT6TR STM32CubeMX ADC配置后使用的是内部参考电压且零点的读数太大了
测评在哪里发?
Group Study vs. Solo Study: What Works Best?
STM32G070CBT6使用硬件SPI无法读出W25Q128的ID
STM32G0B0CET6的usb的时钟只能用48MHz的晶振来实现吗?
STM32G070RET6,中断优先级配置没有效果
如图:STM32F437的TIM10支持从模式吗?
的相关定义给定BANK进行擦除时,假设程序运行在BANK1,即0x8000000开始的空间。
若要擦除BANK2,给的宏参数是FLASH_BANK_1才行。
我刚开始给的是FLASH_BANK_2,结果发现每次0x8000000开始的空间都被擦除了。这点要注意下。
我使用ARM MDK IDE测试的,当我按键多次后就对BANK2进行全擦除,是可以实现对BANK2的擦除的。
不过就是那个参数给的是FLASH_BANK_1,这点跟手册描述似乎是相反的,我会继续跟踪确认这点。
void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)
{
if (Cnt_KeyIN>3)
{
Cnt_KeyIN = 0;
HAL_FLASH_Unlock();
FLASH->CR |= FLASH_BANK_1;//!!!!
FLASH->CR |= (FLASH_CR_STRT );
}
}
STM32 一直都支持 flash 擦写。
不过双bank 模式首先检查一下是否使能了双bank,否则写错地址就容易发生错误。
对于双BANK芯片,其典型应用就是对BANK 1进行Flash编程或擦除时,另一个BANK 2里的程序可以正常运行,
不过,不支持同时对该bank 2的flash编程操作。
注意页地址给正确。擦除时芯片供电稳定。
我使用的是STM32 G0B1RCT6,已经使能了双BANK,生成的HAL中已经定义了“FLASH_DBANK_SUPPORT”
现在程序运行在BANK1(默认),想要尝试擦写BANK2,调用擦写函数也能返回HAL-OK,但是在IAR中View Memory,擦写成功的BANK2的那一页,没有变成0xFF。接着再写入,就发生hardfault了。
是否还有什限制或者还需要提前做什么设定吗?求指导!