背景:( k. [1 p1 @1 L! N 在使用CUBE+STM32H743进行开发时,打开了cache,在利用DMA往外发一些数据时出现了发送几次的数据都一样的问题,经过分析,认为是cache的存在导致DMA发送的内存区域的数据未及时更新。网上翻了翻,找到两个办法解决:1、在DMA发送之前使用SCB_CleanInvalidateDCache(),将cache中标记为dirty的数据写入对应存储区,并腾出相应的cache空间;2、打开MPU,标记DMA发送的内存区域能进行透写)。 我在CUBE上的MPU配置如下: 编译后debug,在进入MPU_Config后,直接进入了Hardfault; - G. i- @) o, {, y& \ 解决办法: 我使用MPU仅仅管理了一小部分内存区域,其他内存未使用MPU管理起来,因此需要使能背景区域(Background Region),否则任何访问违例以及对region外地址区域的访问都将引起fault,做如下更改即可 5 s& j% S; b% `- | ! i# t8 L; b m- b ———————————————— 版权声明:balibala% T, D6 ^& a- X) ~1 L! j6 @ 6 c+ B7 }2 t( P* h. b4 ? |
Stm32H7XX GCC下分散加载实现
【银杏科技ARM+FPGA双核心应用】STM32H7系列10——ADC
DIY-STM32H750核心板
[nucleo-H7A3ZI-Q]1-点亮一个皮皮灯
DIY-STM32H743核心板
【银杏科技ARM+FPGA双核心应用】STM32H7系列57——MDK_FLM
1月10日有奖直播 | 基于STM32 的CODESYS智能自动化解决方案
STM32的CAN FD位定时设置注意事项
用 STM32CUBEMX 生成 STM32H735 LWIP PING 不成功
基于STM32H7 EXTI + SPI +DMA 双缓冲应用经验分享