STM32F407使用外部SRAM存放堆栈进入硬件中断
2019-07-20 18:35发布
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
--因为程序对堆栈空间要求较大,将外部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读写都正常。
一周热门 更多>