久芯网

STM32G031K8T6,大伙有没有碰到过,flash问题?

avatar Hans.he 提问时间: 2023-08-24 08:27:55 / 未解决
主要问题: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工程一样出现该情况)。具体测试情况如下面图片,毕竟有图有真相。
不知道大家是否有碰到过,请远离深坑! STM32G031K8T6,大伙有没有碰到过,flash问题? [相关图片]

如需获得 STM32G031K8T6 等器件的更多信息,请点击链接或 点击此处 联系在线客服!

11个回答
  • avatar butterflyspring
    回答时间: 2023-08-24 08:50:59

    MDK在STM32G0系列上对于断点的处理有点特殊,默认会写一点内容在FLASH里面,以前看到有人在原版说明上有个截图。我试过,与FLASH有关的操作,不使用断点就正常。当然为了调试方便,可以换个编译器或者在原版说明上找个变通的方式试试。另外MDK是ARM收购的软件公司,与ST不是同一家公司,他是做软件配合ST产品用的,就如同IAR公司一样。

  • avatar Hans.he
    回答时间: 2023-08-24 09:17:21

    有人碰到过吗

  • avatar xmshao
    回答时间: 2023-08-24 09:42:15

    我用g031基于IAR IDE做了反复测试,结果是这样的: 如果用Mdk,那个CFGBSY位似乎有点不稳定,感觉跟IDE有点关系。

  • avatar xmshao
    回答时间: 2023-08-24 10:13:34
    xmshao 发表于 2021-9-23 11:53
    我用g031基于IAR IDE做了反复测试,结果是这样的:

  • avatar Hans.he
    回答时间: 2023-08-24 10:41:35
    xmshao 发表于 2021-9-23 11:54

    您好,如果用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; } }

  • avatar Hans.he
    回答时间: 2023-08-24 11:07:35
    xmshao 发表于 2021-9-23 11:53
    我用g031基于IAR IDE做了反复测试,结果是这样的:

    MDK不是不稳定, 是把把必出现该位置1,不知道ST后续是否会优化处理该问题,同样问题在STM32G4上也有,不过G4没有这个CFGBSY位,则会导致PGAERR,PGSERR两位置1,同样是打断点,没有执行与flash任何相关的代码,我个人怀疑是断点所导致,不过暂时没有定位明白。

  • avatar xmshao
    回答时间: 2023-08-24 11:30:50
    Hans.he 发表于 2021-9-23 14:25
    MDK不是不稳定, 是把把必出现该位置1,不知道ST后续是否会优化处理该问题,同样问题在STM32G4上也有,不 ...

    是的,怀疑跟MDK处理端点这个地方有关。

  • avatar Hans.he
    回答时间: 2023-08-24 11:54:27
    xmshao 发表于 2021-9-23 15:04
    是的,怀疑跟MDK处理端点这个地方有关。

    不过只是怀疑,没有证明现在

  • avatar 小房
    回答时间: 2023-08-24 12:16:36

    我调了G070和G030都遇到这个叼问题,一直停在这个cfgbsy为1,调试的时候,刚进入主函数都能看到cfgbsy为1,g系列是不是有问题,有时候又没事,但是一旦出现就一直出现,网上找一大堆资料都没用。没有根本的解决办法

  • avatar 小房
    回答时间: 2023-08-24 12:46:27
    小房 发表于 2022-7-14 11:10
    我调了G070和G030都遇到这个叼问题,一直停在这个cfgbsy为1,调试的时候,刚进入主函数都能看到cfgbsy为1, ...

    有时候上电的时候没问题,软件复位后再操作flash擦除又有问题。都是同样卡死在cfgbsy

  • avatar leechengsheng
    回答时间: 2023-08-24 13:07:19

    我也遇到这个问题,绕过去的方法有两个:1)不设置断点的,这样这个位不会置位的。当然对于调试不利。2)有设置断点的,进入调试后,需要执行reset CPU。这时再执行,可以看到这个位就没有了。

会员中心 微信客服
客服
回到顶部