新手上路
- 积分
- 32
- 金钱
- 32
- 注册时间
- 2012-4-20
- 在线时间
- 2 小时
|
IC: STM32F103ZET
NORFlash: S29GL128P
采用IAP方式,先将一段引导程序写入到内部flash0x8000000,然后执行跳转到NORflash,NORFLASH 中的程序可以正常执行,
但是进不了中断,一有中断就死机(跑飞了)。
void JumpToNorFlash(void)
{
uint32_t AppAddr;
pFunction Jump_To_NorFlash;
//FSMC_NOR_Init();
//FSMC_Sram_Init();
if (((*(__IO uint32_t*)NorFlashAddr) & 0x2FFE0000 ) == 0x20000000)
{
/// Jump to code loaded in NOR memory and execute it .
AppAddr = *(__IO uint32_t*) (NorFlashAddr + 4);
Jump_To_NorFlash = (pFunction) AppAddr;
DRS232S("JumpToNorFlash");
/// Initialize user application's Stack Pointer.
__set_MSP(*(__IO uint32_t*) NorFlashAddr);
DRS232S("Jump");
Jump_To_NorFlash();
}
else
{
DRS232S("NorFlashFail");
}
}
其中NorFlashAddr=0x64000000
///----------------------------------------------------
在NROFLASH中的程序中也有如下:
NVIC_SetVectorTable(NVIC_VectTab_NORFLASH, 0x000);///NVIC_VectTab_NORFLASH = x64000000
其他程序也没什么了,就是一个空while loop。
为什么进不了中断? 需要特别设定?
以上设定在内部flash中是完全可以正常跳转的。
|
|
|