你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 25825|回复: 68

[STM32F3] 【STM32F303开发】+ 使用片内的CCMRAM缩短代码执行时间

  [复制链接]

60

主题

2051

回帖

31

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2015-6-18 22:32:16 | 显示全部楼层 |阅读模式
之前使用F4的时候就发现片内个CCMRAM区域可以用于内核直接读取,进而缩短减小等待时间。拿到F3后发现里面也有个CCMRAM,功能比F4的还强大,所以就准备测试下。
现在使用的F303RE内部有个16K的CCM直接和数据总线和指令总线相连,也就是说CPU能以最大的系统时钟和最小的等待时间从CCM中读取数据或者代码,这个CCM区域只能由CPU访问,DMA不能从CCM中读取数据。官方文档说明了使用CCM的一些优势:比如将频繁读取的数据放到CCM,将中断函数放到CCM,这都能加快程序的执行速度。
ccm.jpg
使用CCM的设置比较简单,首先编辑分散加载文件,将CCM区域加入到里面
ccm.jpg
下面手动编辑修改SCT文件,添加CCM部分到sct
ccm.jpg
下面将需要放到CCM内存的变量,数组,函数等的前面添加下面的关键字即可
  1. __attribute__((section("ccmram")))
复制代码
为了使用使用方便我们将上面的关键字定义为下面的宏
  1. #define CCMRAM  __attribute__((section("ccmram")))
复制代码
比如我将一个数组放到CCM中,将CCMRAM放在定义的数组即可,
  1. CCMRAM        const char buff[20] = "\r\nHi,i am creep!";
复制代码


将一个函数放到CCM

  1. CCMRAM void LED_Init(void)
  2. {
  3.     GPIO_InitTypeDef GPIO_InitStruct;

  4.     RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);

  5.     GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5;
  6.     GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
  7.     GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
  8.     GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
  9.     GPIO_Init(GPIOA, &GPIO_InitStruct);
  10. }
复制代码
重新编译后,你就可以从MAP文件中看到相应的数组和函数被放到0x1000000开始的CCM区域,或者debug也能看到相应的地址,我们将数组和函数的地址发送到串口,可看到的确是在0x10000000之后。
ccm.jpg
刚才说了,F4系列也有个CCM的区域,测试完F3,我又测试下F4,比较悲剧的是只要把函数定义在CCM中程序就会Fault,只定义数组却没有问题,查看map文件,函数地址的确是被分配到了CCM,郁闷了几分钟,重新找到F429的RM,看下了总线矩阵图才发现原因。。。
下面是F429的总线:
f4ccm.jpg
下面的是F303RE的总线:
f3ccm.jpg
F303RE测试代码:
F303RE_CCM.rar (398.16 KB, 下载次数: 314)

评分

参与人数 1ST金币 +2 收起 理由
知足者常乐 + 2

查看全部评分

<
回复

使用道具 举报

60

主题

2051

回帖

31

蝴蝶豆

版主

最后登录
2020-12-9
 楼主| 发表于 2015-6-19 09:58:19 | 显示全部楼层

有金币送点金币
没金币捧点人气
回复 支持 1 反对 0

使用道具 举报

40

主题

1595

回帖

1

蝴蝶豆

论坛元老

最后登录
2018-7-23
发表于 2015-6-18 23:05:55 | 显示全部楼层
研究下下
回复 支持 反对

使用道具 举报

33

主题

1243

回帖

0

蝴蝶豆

论坛元老

最后登录
2019-3-9
发表于 2015-6-18 23:47:17 | 显示全部楼层
谢谢分享,这个值得研究下
回复 支持 反对

使用道具 举报

47

主题

1210

回帖

5

蝴蝶豆

论坛元老

最后登录
2020-8-13
发表于 2015-6-18 23:56:09 | 显示全部楼层
这个好东西,感谢分享!
回复 支持 反对

使用道具 举报

47

主题

3404

回帖

30

蝴蝶豆

版主

最后登录
2020-12-7
发表于 2015-6-19 00:03:06 | 显示全部楼层
好东西哦。。多谢分享
回复 支持 反对

使用道具 举报

50

主题

1057

回帖

67

蝴蝶豆

论坛元老

最后登录
2020-12-2
发表于 2015-6-19 00:15:00 | 显示全部楼层
整个还真没注意到,学习了
回复 支持 反对

使用道具 举报

12

主题

207

回帖

0

蝴蝶豆

高级会员

最后登录
2020-4-27
发表于 2015-6-19 08:48:53 | 显示全部楼层
感谢分享,
回复 支持 反对

使用道具 举报

8

主题

60

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-12-8
发表于 2015-6-19 08:56:04 | 显示全部楼层
颇受启发。谢谢楼主分享。马上用上去
回复 支持 反对

使用道具 举报

26

主题

48

回帖

0

蝴蝶豆

初级会员

最后登录
2015-6-19
发表于 2015-6-19 09:11:01 | 显示全部楼层
赞一个
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版