mdk 如何配置sram
1个回答
展开全部
stm32外接sram详细配置(基于MDK)
此配置实用st的官方例程,sram使用的区块为bank1,bank1的首地址为0x60000000尾地址为0x6fffffff,分为4个64M的区块。
其中:
Bank1_SRAM1_ADDR = 0x60000000;
Bank1_SRAM2_ADDR = 0x64000000;
Bank1_SRAM3_ADDR = 0x68000000;
Bank1_SRAM4_ADDR = 0x6c000000;
分别对应NE1,NE2,NE3,NE4四个片选,相应的IO口应按需要更改配置(下面有官方的例程,里面有详细代码)。
如果想把变量分配到外部SRAM需要配置“Target Options ” ,选择RAM1前的“default”,后面start添0x68000000,“size”添0x80000,此处配置为Bank1_SRAM3的配置。
但此时编译后运行会进入“HardFault_Handler()”函数的死循环,原因是配置了外部SRAM后变量会自动分配到外部SRAM但是代码中某些变量在SRAM初始化之前被编译,导致上述错误。
可以通过将SRAM初始化之前编译的“**.c”和“**.s”文件的“Meorry Assignment”定义到内部RAM的方法来解决。操作方法是:右击该“**.c”选择“option for Flie "**.c"”将“zero Initialized Data”和“other Data”定义到IRAM[0x20000000-0x20000FFFF]。
此配置实用st的官方例程,sram使用的区块为bank1,bank1的首地址为0x60000000尾地址为0x6fffffff,分为4个64M的区块。
其中:
Bank1_SRAM1_ADDR = 0x60000000;
Bank1_SRAM2_ADDR = 0x64000000;
Bank1_SRAM3_ADDR = 0x68000000;
Bank1_SRAM4_ADDR = 0x6c000000;
分别对应NE1,NE2,NE3,NE4四个片选,相应的IO口应按需要更改配置(下面有官方的例程,里面有详细代码)。
如果想把变量分配到外部SRAM需要配置“Target Options ” ,选择RAM1前的“default”,后面start添0x68000000,“size”添0x80000,此处配置为Bank1_SRAM3的配置。
但此时编译后运行会进入“HardFault_Handler()”函数的死循环,原因是配置了外部SRAM后变量会自动分配到外部SRAM但是代码中某些变量在SRAM初始化之前被编译,导致上述错误。
可以通过将SRAM初始化之前编译的“**.c”和“**.s”文件的“Meorry Assignment”定义到内部RAM的方法来解决。操作方法是:右击该“**.c”选择“option for Flie "**.c"”将“zero Initialized Data”和“other Data”定义到IRAM[0x20000000-0x20000FFFF]。
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
STM32是一种由意法半导体(STMicroelectronics)公司设计和生产的单片机系列,广泛用于嵌入式系统、物联网(IoT)设备、汽车电子、工业自动化等领域。STM32具有以下优点:1. 低功耗:STM32单片机通常具有较低的功耗,...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询