
背景: 在使用CUBE+STM32H743进行开发时,打开了cache,在利用DMA往外发一些数据时出现了发送几次的数据都一样的问题,经过分析,认为是cache的存在导致DMA发送的内存区域的数据未及时更新。网上翻了翻,找到两个办法解决:1、在DMA发送之前使用SCB_CleanInvalidateDCache(),将cache中标记为dirty的数据写入对应存储区,并腾出相应的cache空间;2、打开MPU,标记DMA发送的内存区域能进行透写)。 我在CUBE上的MPU配置如下: ![]() 编译后debug,在进入MPU_Config后,直接进入了Hardfault; 解决办法: 我使用MPU仅仅管理了一小部分内存区域,其他内存未使用MPU管理起来,因此需要使能背景区域(Background Region),否则任何访问违例以及对region外地址区域的访问都将引起fault,做如下更改即可 ![]() ———————————————— 版权声明:balibala |
高手入门STM32总结+学习步骤
STM32开发五大误区,新手别傻傻信了
【STM32】总线架构
没学过51单片机,能否零基础学STM32?
STM32电机控制用什么型号?高级定时器功能详解与芯片选型指南
STM32H7R/S+TouchGFX:解锁智能家电沉浸式体验新维度
什么是STM32? STM32与ARM有什么关系? STM32能做什么?
STM32 不同时钟频率有什么不同的影响
《STM32H7R/S信息安全线上课程》学习笔记+安全存储
《STM32H7R/S信息安全线上课程》学习笔记+时域隔离,片内与片外存储器保护