硬汉嵌入式论坛

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

[MPU] CubeMx自动生成代码里的 MPU_Config() 问题

[复制链接]

9

主题

16

回帖

43

积分

新手上路

积分
43
发表于 2022-6-6 20:41:35 | 显示全部楼层 |阅读模式
用 CubeMx 生成STM32H750的工程,并没有设置MPU相关的功能,但生成的代码里自动包含了 MPU_Config() 函数。其中的
MPU_InitStruct.SubRegionDisable = 0x87;
不太明白是什么意思,这个 0x87 子域有什么特别的吗?

Snipaste_2022-06-06_20-28-37.png
回复

使用道具 举报

12

主题

178

回帖

214

积分

高级会员

积分
214
发表于 2022-6-6 21:32:05 | 显示全部楼层
0x87 = 0b 1000 0111   代表第0/1/2/7子域 禁止,也就是 从0开始的第 0/1/2/7个 512MB 都禁止了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106833
QQ
发表于 2022-6-7 00:33:10 | 显示全部楼层
image.png
回复

使用道具 举报

9

主题

16

回帖

43

积分

新手上路

积分
43
 楼主| 发表于 2022-6-7 16:11:50 | 显示全部楼层

再请教两个相关的问题:

问题1:
CubeMx 默认生成的分散加载地址配置
3.png
这个地址范围没在 0x6000 0000 ~ 0xDFFF FFFF (上楼红框圈出的区域)里。
没在这个区域里,是不是也就没起到作用?



问题2:代码里的
MPU_InitStruct.Number = MPU_REGION_NUMBER0;
是不是就是v7教程里的16个区域?(见下面截图)
Snipaste_2022-06-07_15-46-07.png


这16个区域重叠且规则不同,可以用优先级协调。
但是如果代码里写的优先级相同,会出现什么情况?

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106833
QQ
发表于 2022-6-8 10:13:51 | 显示全部楼层
frank117 发表于 2022-6-7 16:11
再请教两个相关的问题:

问题1:

1、意思是没有前后共计2GB的空间使能MPU,用户要用,可以自己配置,也可以重新配置覆盖中间的2GB空间。
2、这个序号MPU_REGION_NUMBER0对应了一个寄存器配置,如果你配置的相同,会最后一个配置的选项起作用,其它不起作用。

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 23:02 , Processed in 0.165646 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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