打印
[软件资料]

关于CW32外设库中FLASH_SetReadOutLevel(uint16_t RdLevel)函数的一些疑惑

[复制链接]
902|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LY-Bear|  楼主 | 2025-5-29 10:03 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
在官方提供的L010外设库函数中,FLASH这部分的源文件中的void FLASH_SetReadOutLevel(uint16_t RdLevel)函数中,
发现这个函数中出现了几个魔法数字,分别是

类似秘钥的 0x5A50
可能为设置读保护地址的 0x4000431C
可能为MCU软复位地址的 0x40004370
可能为软复位命令数字的 0x5A5AABCD

这几个数字我在数据手册和用户手册中都没有找到,且这两个裸地址指向
SYSCTRL的地址范围内,且在寄存器列表中并未标出这个地址的寄存器定义

此外,无法在用户手册和数据手册中找到SYSRESETREQ复位怎么去触发,
而只看到设置完读保护等级后,对这块对着未知的0x40004370地址写了0x5A5AABCD
表示能触发MCU复位,很疑惑。

搞这几个魔法数字,真的很迷~
希望官方的人能帮我解答上述问题。

使用特权

评论回复
沙发
LY-Bear|  楼主 | 2025-5-29 12:31 | 只看该作者
本帖最后由 LY-Bear 于 2025-5-29 13:02 编辑

在core_cm0plus.h找到SCB结构体,找到SYSRESETREQ在哪里定义了。但是那个0x4000431C和0x40004370地址是啥还没搞清楚。

使用特权

评论回复
板凳
dffzh| | 2025-5-29 13:29 | 只看该作者
本帖最后由 dffzh 于 2025-5-29 13:36 编辑

确实,我也看了一下,库函数里直接通过将数值写入地址的方式操作了,更合理的应该是加上寄存器宏定义来实现;
使用手册里也没有这几个地址对应的寄存器的说明;魔法数字,一点不假!

实际使用倒是不影响。

使用特权

评论回复
地板
dffzh| | 2025-5-29 13:31 | 只看该作者
如果你要使用读保护功能,下面这个帖子你最好是看一下,有读保护操作次数限制的:
https://bbs.21ic.com/icview-3454654-1-1.html

使用特权

评论回复
5
LY-Bear|  楼主 | 2025-5-29 14:15 | 只看该作者
本帖最后由 LY-Bear 于 2025-5-29 14:16 编辑
dffzh 发表于 2025-5-29 13:31
如果你要使用读保护功能,下面这个帖子你最好是看一下,有读保护操作次数限制的:
https://bbs.21ic.com/ic ...

怎么感觉官方有些地方藏着掖着的?读保护有次数限制也不在用户手册里说,此外,还搞这种魔法数字,挺难评的~

使用特权

评论回复
6
dffzh| | 2025-5-29 14:38 | 只看该作者
LY-Bear 发表于 2025-5-29 14:15
怎么感觉官方有些地方藏着掖着的?读保护有次数限制也不在用户手册里说,此外,还搞这种魔法数字,挺难评 ...
厂商可能有自己的见解和原因吧,就看后续此帖有木有专业人士解答了。

使用特权

评论回复
7
hight1light| | 2025-6-6 11:45 | 只看该作者
在CW32L010外设库函数FLASH_SetReadOutLevel中出现的魔法数字(0x5A50、0x4000431C、0x40004370、0x5A5AABCD)未在官方文档中明确标注

使用特权

评论回复
8
teaccch| | 2025-6-6 12:52 | 只看该作者
0x5A50:可能作为密钥或校验值,用于确保读保护等级设置的合法性,防止误操作

使用特权

评论回复
9
miltk| | 2025-6-6 14:16 | 只看该作者
0x4000431C可能指向与读保护设置相关的寄存器地址,用于存储或配置读保护等级。

使用特权

评论回复
10
nuan11nuan| | 2025-6-6 16:05 | 只看该作者
这些地址可能是芯片内部实现的特殊功能寄存器,用于控制读保护等安全功能,但出于安全或设计考虑,未在公开文档中详细标注。

使用特权

评论回复
11
hhdhy| | 2025-6-6 18:06 | 只看该作者
文档更新滞后了吧,官方文档可能未及时更新,导致这些地址信息缺失。

使用特权

评论回复
12
wamed| | 2025-6-6 20:23 | 只看该作者
0x5A5AABCD可能为软复位命令数字,写入该值至特定地址可触发MCU重启,确保读保护等级设置生效。

使用特权

评论回复
13
twinkhahale| | 2025-6-7 07:25 | 只看该作者
0x40004370可能为MCU软复位地址,写入特定值(如0x5A5AABCD)可触发MCU重启以更新读保护等级。

使用特权

评论回复
14
gongqijuns| | 2025-6-7 09:01 | 只看该作者
这些地址可能是厂商自定义的特殊功能地址,用于实现特定的芯片功能。

使用特权

评论回复
15
星星点点didi| | 2025-6-7 12:10 | 只看该作者
查阅官方文档更新,关注官方文档的更新情况,看是否有新增或修改的信息。

使用特权

评论回复
16
gra22ce| | 2025-6-7 14:09 | 只看该作者
建议联系官方技术支持,向芯片厂商的技术支持团队咨询,获取更准确的信息和解决方案。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝