你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
Hans.he 提问时间:2021-9-23 09:19 / 未解决
主要问题: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工程一样出现该情况)。具体测试情况如下面图片,毕竟有图有真相。
不知道大家是否有碰到过,请远离深坑! 微信图片_20210922163242.png
收藏 评论11 发布时间:2021-9-23 09:19

举报

11个回答
butterflyspring 回答时间:2022-7-15 12:35:06
MDK在STM32G0系列上对于断点的处理有点特殊,默认会写一点内容在FLASH里面,以前看到有人在原版说明上有个截图。我试过,与FLASH有关的操作,不使用断点就正常。当然为了调试方便,可以换个编译器或者在原版说明上找个变通的方式试试。另外MDK是ARM收购的软件公司,与ST不是同一家公司,他是做软件配合ST产品用的,就如同IAR公司一样。
Hans.he 回答时间:2021-9-23 09:21:48
有人碰到过吗
xmshao 回答时间:2021-9-23 11:53:33
我用g031基于IAR IDE做了反复测试,结果是这样的:


如果用Mdk,那个CFGBSY位似乎有点不稳定,感觉跟IDE有点关系。
xmshao 回答时间:2021-9-23 11:54:51
xmshao 发表于 2021-9-23 11:53
我用g031基于IAR IDE做了反复测试,结果是这样的:

uuu.png
Hans.he 回答时间:2021-9-23 14:22:27

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

Hans.he 回答时间:2021-9-23 14:25:57
xmshao 发表于 2021-9-23 11:53
我用g031基于IAR IDE做了反复测试,结果是这样的:

MDK不是不稳定, 是把把必出现该位置1,不知道ST后续是否会优化处理该问题,同样问题在STM32G4上也有,不过G4没有这个CFGBSY位,则会导致PGAERR,PGSERR两位置1,同样是打断点,没有执行与flash任何相关的代码,我个人怀疑是断点所导致,不过暂时没有定位明白。
xmshao 回答时间:2021-9-23 15:04:58
Hans.he 发表于 2021-9-23 14:25
MDK不是不稳定, 是把把必出现该位置1,不知道ST后续是否会优化处理该问题,同样问题在STM32G4上也有,不 ...

是的,怀疑跟MDK处理端点这个地方有关。
Hans.he 回答时间:2021-9-23 15:31:12
xmshao 发表于 2021-9-23 15:04
是的,怀疑跟MDK处理端点这个地方有关。

不过只是怀疑,没有证明现在
小房 回答时间:2022-7-14 11:10:03
我调了G070和G030都遇到这个叼问题,一直停在这个cfgbsy为1,调试的时候,刚进入主函数都能看到cfgbsy为1,g系列是不是有问题,有时候又没事,但是一旦出现就一直出现,网上找一大堆资料都没用。没有根本的解决办法
小房 回答时间:2022-7-14 11:11:05
小房 发表于 2022-7-14 11:10
我调了G070和G030都遇到这个叼问题,一直停在这个cfgbsy为1,调试的时候,刚进入主函数都能看到cfgbsy为1, ...

有时候上电的时候没问题,软件复位后再操作flash擦除又有问题。都是同样卡死在cfgbsy
leechengsheng 回答时间:2022-9-15 10:43:15
我也遇到这个问题,绕过去的方法有两个:1)不设置断点的,这样这个位不会置位的。当然对于调试不利。2)有设置断点的,进入调试后,需要执行reset CPU。这时再执行,可以看到这个位就没有了。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版