|
此配置实用st的官方例程,sram使用的区块为bank1,bank1的首地址为0x60000000尾地址为0x6fffffff,分为4个64M的区块。4 l6 r6 ` T4 X7 I2 P/ r8 q 其中: Bank1_SRAM1_ADDR = 0x60000000;3 W6 D2 ` d- p$ G) E Bank1_SRAM2_ADDR = 0x64000000;0 m, D, s1 Q b2 _3 f Bank1_SRAM3_ADDR = 0x68000000; Bank1_SRAM4_ADDR = 0x6c000000; 分别对应NE1,NE2,NE3,NE4四个片选,相应的IO口应按需要更改配置(下面有官方的例程,里面有详细代码)。 如果想把变量分配到外部SRAM需要配置“Target Options ” ,选择RAM1前的“default”,后面start添0x68000000,“size”添0x80000,此处配置为Bank1_SRAM3的配置。9 Z- s% a$ }( p! y 但此时编译后运行会进入“HardFault_Handler()”函数的死循环,原因是配置了外部SRAM后变量会自动分配到外部SRAM但是代码中某些变量在SRAM初始化之前被编译,导致上述错误。0 `+ M- A6 q1 U* m 可以通过将SRAM初始化之前编译的“**.c”和“**.s”文件的“Meorry Assignment”定义到内部RAM的方法来解决。操作方法是:右击该“**.c”选择“option for Flie "**.c"”将“zero Initialized Data”和“other Data”定义到IRAM[0x20000000-0x20000FFFF]。/ p# g6 V m+ m; p! K: ^$ a0 @1 V1 _; b + g. Q2 n j& C. \* X 8 ^ g( j1 [! y; ~7 c3 ^ |
SRAM.rar
下载12.05 KB, 下载次数: 935
微信公众号
手机版
回复:stm32外接sram详细配置(基于MDK)
RE:stm32外接sram详细配置(基于MDK)
RE:stm32外接sram详细配置(基于MDK)
回复:stm32外接sram详细配置(基于MDK)
可以通过将SRAM初始化之前编译的“**.c”和“**.s”文件的“Meorry Assignment”定义到内部RAM的方法来解决。操作方法是:右击该“**.c”将“zero Initialized Data”和“other Data”定义到IRAM[0x20000000-0x20000FFFF]。
回复:stm32外接sram详细配置(基于MDK)
请问你这一步是如何操作,能详细说明么?我看不是很懂# p$ ^0 ?# G; [, Z" @- f( R
可以通过将SRAM初始化之前编译的“**.c”和“**.s”文件的“Meorry Assignment”定义到内部RAM的方法来解决。操作方法是:右击该“**.c”将“zero Initialized Data”和“other Data”定义到IRAM[0x20000000-0x20000FFFF]。# q1 f* {) F9 ]( L) f* B! W. p/ b
9 S$ E8 X. M/ l0 J' V A
/ }; W. F9 q, p2 a+ p0 _* ^
在MDK环境下,左侧竖着的工作框内有C文件的列表,直接右键点击该C文件即可进行操作~
回复:stm32外接sram详细配置(基于MDK)
RE:stm32外接sram详细配置(基于MDK)
回复:stm32外接sram详细配置(基于MDK)
RE:stm32外接sram详细配置(基于MDK)
RE:stm32外接sram详细配置(基于MDK)
RE:stm32外接sram详细配置(基于MDK)
回复:stm32外接sram详细配置(基于MDK)
回复:stm32外接sram详细配置(基于MDK)
回复:stm32外接sram详细配置(基于MDK)
代码回复可见~请多支持