主要问题:STM32G031K8程序打断点在STARTUP.S文件中,停在断点处就出现FLASH_CR寄存中的CFGBSY置位为1,导致操作flash错误。而且按照手册说明该位的置位和复位均由硬件决定。所以外部完全无法操作。导致G系列的flash是无法操作的。本人认为是芯片的设计问题,已经排除芯片坏掉,除非整个批次均有问题因为已经换过5片MCU以验证问题。(按照断点处的情况 即整个代码只执行了一句话)。 主要情况如下:IDE为MDK-KEIL-V5.36,工具是STM32G031-Nucleo-32。参考例程是官方例程STM32Cube_FW_G0_V1.5.0\Projects\NUCLEO-G031K8\Examples_LL\GPIO\GPIO_InfiniteLedToggling_Init中的例程MDk例程(当然也做过自己的工程测试,结局一样)(为啥采用GPIO工程例程而不是操作flash工程来说明芯片有情况,是因为用flash工程一样出现该情况)。具体测试情况如下面图片,毕竟有图有真相。 不知道大家是否有碰到过,请远离深坑! |
LL库变成黑色,不能用,怎么回事
按照文档标注ADC最高输入时钟为60兆, 将主频配置为120(原来是170M),AD再进行1分频/2分频/4分频,对应的转换位数12位,采样周期2.5,对应的频
用stm32cubeide生成的STM32G030F6P6代码只要一开中断,任何中断程序都会跑飞.
关于stm32g431串口与FDCAN数据不同同时处理问题
STM32G431的CAN控制器在收发器开路后,程序发送数据后,TX高电平。RX低电平。
在使用FDCAN控制器发送字节有问题
STM32G0B1CBT6 双Bank升级,运行Bank2上Flash不能写问题
有关STM32G0B1RET6芯片FLASH擦除问题
keil无法对G474CBTx扇区擦除烧录较大程序是什么原因?
STM32G030烧录程序
如果用Mdk,那个CFGBSY位似乎有点不稳定,感觉跟IDE有点关系。
您好,如果用IAR,在显示上面的确如您贴图所示CFCGSY不会为1,但是照样操作不了Flash,原因是一致的,只是CFCGSY不是为1,没在IDE上显示,但是操作flash那一步需要判断时条件达到了 如下代码进入了:
/* Wait for control register to be written */
timeout = HAL_GetTick() + Timeout;
while ((FLASH->SR & FLASH_SR_CFGBSY) != 0x00U)
{
if (HAL_GetTick() >= timeout)
{
return HAL_TIMEOUT;
}
}
MDK不是不稳定, 是把把必出现该位置1,不知道ST后续是否会优化处理该问题,同样问题在STM32G4上也有,不过G4没有这个CFGBSY位,则会导致PGAERR,PGSERR两位置1,同样是打断点,没有执行与flash任何相关的代码,我个人怀疑是断点所导致,不过暂时没有定位明白。
是的,怀疑跟MDK处理端点这个地方有关。
不过只是怀疑,没有证明现在
有时候上电的时候没问题,软件复位后再操作flash擦除又有问题。都是同样卡死在cfgbsy