跳转到主内容
思享编程网:思考分享,玩转编程世界!

如何在STM32F4上使用CCM内存?

文章导读

大家好,我是陆砚码。今天我们来聊聊STM32F4的CCM内存。你可能觉得这东西有点高大上,但其实它对提高程序性能大有裨益。这篇文章会手把手教你如何在STM32F4上使用CCM内存,让你轻松提升你的项目性能。

CCM内存介绍

相较于F2系列,F4系列新增加了一个64 KB的CCM(内核耦合存储器)数据RAM。这块内存不属于总线矩阵,只能通过CPU访问,外设如DMA无法访问它。图1展示了STM32F4的系统架构,可以帮助你更好地理解CCM内存的位置。

图1:STM32F405xx/07xx和STM32F415xx/17xx器件的系统架构

用法(基于MDK)

下面是使用MDK在STM32F4上使用CCM内存的步骤:

  • ① 首先,启用CCM内存部分。
  • ② 设置完成后,重新编译,你会在map文件中看到CCM内存的资源分配。由于IRAM1优先使用,且SRAM1一般够用,所以CCM内存可能不会分配资源。
  • ③ 使用CCM内存通常需要手动分配资源。不勾选USE Memory Layout from Targe Dialog,MDK会自动载入一个分散加载文件(.sct),你可以通过修改这个文件来手动选择要放到CCM中的数据。
  • ④ 查看.map文件,将需要的文件添加到(.sct)文件中。

例如,将mem.o和memp.o中的数据放到CCM中,可以这样设置:

编译后的内存分配:

将变量放到CCM中

如果想把程序中的某些变量放到CCM中,需要定义一个section,将这些变量放到这个section中,再由(.sct)文件分配到CCM中。

注意事项

1. 测试过程中,尝试直接指定变量的内存到CCM的方法,但是定义多个变量时,编译会报错。

2. 据说把系统堆栈放到CCM中,可以提高处理效率,但暂时还没法测试。

3. 将CCM用作高速运算缓冲,这种高大上的应用才能发挥它真正的价值。

总结与拓展

今天我们介绍了如何在STM32F4上使用CCM内存。希望通过这篇文章,你能够掌握CCM内存的使用方法,并在实际项目中发挥它的作用。如果你对STM32F4或其他编程技术有更多疑问,欢迎访问「思享编程网」(www.sxgpb.com)了解更多内容。

我是陆砚码,我们下期再见!

相关文章