硬汉嵌入式论坛

 找回密码
 立即注册
查看: 299|回复: 3
收起左侧

[有问必答] STM32G473 解除写保护失败

[复制链接]

6

主题

13

回帖

31

积分

新手上路

积分
31
发表于 2025-3-23 12:25:03 | 显示全部楼层 |阅读模式
在进行使用串口升级,下载程序时,有一个步骤是解除flash的写保护。在此过程中是基本上按照官方例程HAL库的实现的,包括了flash、选项字节的解锁、清除错误标志位等等。但是在每次进行解除时都出现解除失败(一次都没成功),通过调试发现打断点,发现似乎是因为SR->PGSERR = 1,返回错误导致的原因。看了一下芯片的手册,但没有找到具体的原因。(注:在程序中是使用了独立看门狗、窗口看门狗、低功耗STOP、定时器中断),求有经验者能解决这个问题


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2025-3-24 01:17:56 | 显示全部楼层
除了SR->PGSERR = 1

还有就是选项字节操作API的每个函数返回值都判断下。

ps:论坛上反馈G系列内部Flash操作问题的,好像还挺多的。
回复

使用道具 举报

5

主题

38

回帖

53

积分

初级会员

积分
53
发表于 2025-3-24 10:19:14 | 显示全部楼层
直接使用官方例程正常吗
回复

使用道具 举报

6

主题

13

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 5 天前 | 显示全部楼层
小一c 发表于 2025-3-24 10:19
直接使用官方例程正常吗

太久没看论坛了,这个问题找到原因了。
是由于在HAL库中,屏蔽了某个定时器的初始化,然后自己实现了定时器的配置,并使能中断。由于HAL库cubemx代码生成时会在中断服务函数中自动生成中断的回调函数,导致中断里一种在进行寄存器读写操作,但由于没初始化,结构体并没有映射到对应的寄存器,而是映射到了0地址(存放的中断向量表,地址正好就是flash区域),一直在进行非法写操作
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-4-26 01:45 , Processed in 0.231197 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表