【STM32F303开发】开发学习笔记、教程集合贴
【合集】STM32F303开发教程
【STM32F303开发】(五)TIM定时器PWM的输出与捕获
【STM32F303开发】+ 内部Flash模拟EEPROM
【STM32F303开发】+如何解析GPS数据
【STM32F303开发】+使用fromelf反汇编keil生成的AXF文件
使用STM32F303VBT6的SPI驱动TM1629A
【STM32F303开发】+ 使用SWO输出调试信息到Debug Viewer窗口
【STM32F303开发】基础:工程模板+LED+USART+常用文档+按键中断
【STM32F303开发】(二)DAC+定时器+DMA实例
你看清楚我可没有说F4把变量分配到CCM区域会fault,我是说分配函数到CCM区域会fault。
当变量长度少的时候(如buf【2】),分配到CCM是不会fault,但是当定义变量buf【64*1024】,大数组的时候就会fault。而且buf【2】的情况下,对变量初始化buf【1】=2后,代码实际运行,串口打印出buf【1】的值确实400多。 请教下,F4的CCM是否还需要做其他的配置?
首先你要确定你定义的数组size小于CCM的区域,不同的片子CCM的大小是不同的,根据这个大小来修改SCR里面的CCM的值,要不然肯定会出错。其他的设置和F3的一样。
表示不知道如何送金币啊
第一:我是用的是F407,CCM大小64k。
第二:使用IAR编译环境,.icf文件下配置CCMRAM地址范围在0x10000000-0x1000ffff.
第三:在.map文件下查看到变量ucHeap【64*1024】 地址成功分配到0x10000000 0x10000
CCM的相关配置都是官方提供的F3参考文档,结果是程序实际跑起来,就会进入fault。
感谢版主,你这是要准备打赏我点金币吗?
1.我没有用过IAR测试CCM分配,所以我不知道是不是和keil的设置一致。
2.我感觉你应该先找到你上面说的把变量分频到CCM然后变量会出错的原因。
3.有空我试下在keil里分配64K的数组到CCM里面会不会有问题。
我刚测试了keil下把64K数组放在CCM,数组写进去的内容没有变化,数组内元素可以修改,程序正常运行不会fault。
表示版主不能打赏,只有管理员有这个权限。。。
好的,非常感谢,我至少可以确认KEIL下可以。我在找找IAR原因。
楼主这个方法还不错,不知道能不能用DMA来传输定义在SDRAM中的数据!!!?