完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
关于 STM32f7xx 的设置,我的设置如下:
static void MPU_Set_Protection(uint32_t baseaddr, uint32_t size, uint32_t rnum, uint32_t ap, u8 sen, u8 cen, u8 ben) { MPU_Region_InitTypeDef MPU_Initure; HAL_MPU_Disable(); //配置MPU之前先关闭MPU,配置完成以后在使能MPU MPU_Initure.Enable = MPU_REGION_ENABLE; //使能该保护区域 MPU_Initure.Number = rnum; //设置保护区域 MPU_Initure.BaseAddress = baseaddr; //设置基址 MPU_Initure.Size = size; //设置保护区域大小 MPU_Initure.SubRegionDisable = 0x00; //禁止子区域 MPU_Initure.TypeExtField = MPU_TEX_LEVEL0; //设置类型扩展域为level0 MPU_Initure.AccessPermission = (uint8_t)ap; //设置访问权限, MPU_Initure.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE; //允许指令访问(允许读取指令) MPU_Initure.IsShareable = sen; //是否允许共用 MPU_Initure.IsCacheable = cen; //是否允许cache MPU_Initure.IsBufferable = ben; //是否允许缓冲 HAL_MPU_ConfigRegion(&MPU_Initure); //配置MPU HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT); //开启MPU } // 下面这样设置后,读写 qspi 没有反应,屏蔽此段代吗后 qspi 可以正常读写了,这是为何 ??? MPU_Set_Protection(0x80000000, MPU_REGION_SIZE_2GB, // 吧这个改成 256MByte 就可以了,是不是 不能够设置 为 2GByte ?? MPU_REGION_NUMBER3, MPU_REGION_FULL_ACCESS, MPU_ACCESS_NOT_SHAREABLE, MPU_ACCESS_CACHEABLE, MPU_ACCESS_BUFFERABLE); //保护整个NAND FLASH区域,共2048M字节 |
|
相关推荐
5个回答
|
|
|
学习学习
|
|
|
|
|
|
是不是保护区域太大了?导致只能执行指令数据不能读写。
|
|
|
|
|
|
|
|
|
|
|
|
本帖最后由 hpdell 于 2017-3-26 18:38 编辑 感觉这个 f7的 mpu 就是个麻烦,有时吧这个功能设置好了,但是另外一个又不能够使用了,哎,悲惨的 f7比如下面的设置 static void MPU_Set_Protection(uint32_t baseaddr, uint32_t size, uint32_t rnum, uint32_t ap, u8 sen, u8 cen, u8 ben) { MPU_Region_InitTypeDef MPU_Initure; HAL_MPU_Disable(); //配置MPU之前先关闭MPU,配置完成以后在使能MPU MPU_Initure.Enable = MPU_REGION_ENABLE; //使能该保护区域 MPU_Initure.Number = rnum; //设置保护区域 MPU_Initure.BaseAddress = baseaddr; //设置基址 MPU_Initure.Size = size; //设置保护区域大小 MPU_Initure.SubRegionDisable = 0x00; //禁止子区域 MPU_Initure.TypeExtField = MPU_TEX_LEVEL0; //设置类型扩展域为level0 MPU_Initure.AccessPermission = (uint8_t)ap; //设置访问权限, MPU_Initure.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE; //允许指令访问(允许读取指令) MPU_Initure.IsShareable = sen; //是否允许共用 MPU_Initure.IsCacheable = cen; //是否允许cache MPU_Initure.IsBufferable = ben; //是否允许缓冲 HAL_MPU_ConfigRegion(&MPU_Initure); //配置MPU HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT); //开启MPU } MPU_Set_Protection(0xC0000000, MPU_REGION_SIZE_128MB, MPU_REGION_NUMBER2, MPU_REGION_FULL_ACCESS, MPU_ACCESS_NOT_SHAREABLE, MPU_ACCESS_CACHEABLE, // 此处设置为 MPU_ACCESS_NOT_CACHEABLE 在申请 外部SDRAM内存进行读写时完全正确, // 但 设置MPU_ACCESS_CACHEABLE 为这个时,申请 外部SDRAM内存进行读写时错误, // 如果不设置为 MPU_ACCESS_CACHEABLE 这个,那么外部设置单片机的 Heap 使用时,速度又跟不上 // 请教下此处该如何设置才稳妥 ????????????????????????????? MPU_ACCESS_BUFFERABLE); //保护SDRAM区域,共128M字节 |
|
|
|
|
|
这个我也不太懂,等待大神来解答了。
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2797 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2403 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2276 浏览 0 评论
2388 浏览 1 评论
1637 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 00:47 , Processed in 0.847698 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1252