STM32
直播中

王丽

7年用户 1266经验值
私信 关注
[问答]

STM32G031K8程序打断点在STARTUP.S文件中,停在断点处会导致操作flash错误怎么解决?

主要问题: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.0ProjectsNUCLEO-G031K8Examples_LLGPIOGPIO_InfiniteLedToggling_Init中的例程MDk例程(当然也做过自己的工程测试,结局一样)(为啥采用GPIO工程例程而不是操作flash工程来说明芯片有情况,是因为用flash工程一样出现该情况)。具体测试情况如下面图片,毕竟有图有真相。
不知道大家是否有碰到过,请远离深坑!
[td]MDK在STM32G0系列上对于断点的处理有点特殊,默认会写一点内容在FLASH里面,以前看到有人在原版说明上有个截图。我试过,与FLASH有关的操作,不使用断点就正常。当然为了调试方便,可以换个编译器或者在原版说明上找个变通的方式试试。另外MDK是ARM收购的软件公司,与ST不是同一家公司,他是做软件配合ST产品用的,就如同IAR公司一样。

回帖(2)

池冰龄

2024-3-25 16:36:18
MDK在STM32G0系列上对于断点的处理有点特殊,默认会写一点内容在FLASH里面,以前看到有人在原版说明上有个截图。我试过,与FLASH有关的操作,不使用断点就正常。当然为了调试方便,可以换个编译器或者在原版说明上找个变通的方式试试。
举报

王思敏

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

更多回帖

发帖
×
20
完善资料,
赚取积分