STM32 CCMRAM 使用

参考文档:

STM32F4上CCM内存的使用小结_ccm sram_城南花已开..的博客-CSDN博客

https://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=602255&extra=page=&page=1

基于Keil  MDK

1.修改配置文件指定相关参数使用该内存

使用CCM一般都要手动分配资源(确保这块内存不被外设使用),自行分配内存需要这样操作:

①参考下图,不勾选USE Memory Layout from Targe Dialog,这时mdk会自动载入一个分散加载文件(.sct),修改这个文件就可以手动选择要放到CCM中的数据了。

 ②点击 Edit 修改 .sct 文件 增加 ccmram 部分的定义

    RW_IRAM2 0x10000000 0x00008000  {  ; RW data
   .ANY (ccmram)
  }

完整的 .sct 文件内容参考

; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************

LR_IROM1 0x08000000 0x00020000  {    ; load region size_region
  ER_IROM1 0x08000000 0x00020000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
   .ANY (+XO)
  }
  RW_IRAM1 0x20000000 0x00014000  {  ; RW data
   .ANY (+RW +ZI)
  }
  
    RW_IRAM2 0x10000000 0x00008000  {  ; RW data
   .ANY (ccmram)
  }
}

③定义一个宏

#define CCMRAM  __attribute__((section("ccmram")))

④定义分配到 CCMRAM 的变量或函数,如下

//一个变量放到CCM
CCMRAM int count = 0;

//数组放到CCM中,将CCMRAM放在定义的数组即可
CCMRAM    const char buff[20] = "Hello World\r\n";

//将一个函数放到CCM
CCMRAM void HRTIM1_TIMA_IRQHandler(void)
{

}

重新编译后,就可以从MAP文件中看到相应的数组和函数被放到0x1000000开始的CCM区域,或者debug也能看到相应的地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值