OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4394|回复: 0

STM32F407使用外部SRAM存放堆栈进入硬件中断

[复制链接]

2

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2016-10-26
在线时间
35 小时
发表于 2016-11-27 17:45:48 | 显示全部楼层 |阅读模式
2金钱
--因为程序对堆栈空间要求较大,将外部SRAM做为堆栈空间使用。

按照http://www.openedv.com/thread-47895-1-1.html这个帖子在F1中尝试可以。
但是移植到F4上在执行了BX  R0后就进入硬件中断
     LDR     R0, =SystemInit
     BLX     R0
     LDR     R0, =__main
     BX      R0
     ENDP

system_stm32f4xx.c中FSMC配置程序为(配置的FSMC可用):
    FSMC_Bank1->BTCR[4]=0X00000000;
    FSMC_Bank1->BTCR[5]=0X00000000;
    FSMC_Bank1E->BWTR[4]=0X00000000;

    FSMC_Bank1->BTCR[4]|=1<<12;
    FSMC_Bank1->BTCR[4]|=1<<4;
        
    FSMC_Bank1->BTCR[5]|=8<<8;
    FSMC_Bank1->BTCR[5]|=0<<4;      
    FSMC_Bank1->BTCR[5]|=0<<0;

    FSMC_Bank1E->BWTR[4]=0x0FFFFFFF;

    FSMC_Bank1->BTCR[4]|=1<<0;



SRAM.sct文件已经配置成:
LR_IROM1 0x08000000 0x00100000  {    ; load region size_region
  ER_IROM1 0x08000000 0x00100000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_RAM1 0x68000000 0x00100000  {  ; RW data
   .ANY (+RW +ZI)
  }
  RW_IRAM1 0x20000000 0x00020000  {
    system_stm32f4xx.o (+ZI +RW)
    startup_stm32f40_41xxx.o (+ZI +RW)
   .ANY (+RW +ZI)
  }
}
将RW_RAM1段注释调程序能跑,SRAM读写都正常。

  


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-10 21:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表