问答

汇集网友智慧,解决技术难题

linyijian

TA的家园币:16  

  • AT32F407扩展224KSRAM后加入boot程序SRAM超过128K无法运行

    AT32F407使用扩展224KSRAM后,加入boot程序后SRAM超过128K程序无法运行是什么原因,去掉boot程序可以用到200K都没问题,下面是boot的跳转程序voidBOOT_P_Quit(void)//跳转执行另一地址程序{if(((*(vu32*)ApplicationAddress)&0x2FFE0000)==0x20000000)//检查栈顶地址是否合法.{JumpAddress=*(volatileu32*)(ApplicationAddress+4);//ApplicationAddress=0x8002000/*Jumptouserapplication*/Jump_To_Application=(pFunction)JumpAddress;/*初始化用户应用程序的堆栈指针*///MSR_MSP(*(volatileu32*)(ApplicationAddress));__set_MSP(*(volatileu32*)(ApplicationAddress));Jump_To_Application();}elsereturn;}voidBOOT_Jump_To_App(void){CRM->apb1rst=0x00000000;//跳转关中断关时钟CRM->apb2rst=0x00000000;CRM->ahben=0x00000014;//睡眠模式闪存和SRAM时钟使能.其他关闭CRM->apb1en=0x00000000;CRM->apb2en=0x00000000;CRM->ctrl=0x00000001;//使能内部高速时钟HSIONCRM->cfg&=0xF8FF0000;//复位SW[1:0],HPRE[3:0],PPRE1[2:0],PPRE2[2:0],ADCPRE[1:0],MCO[2:0]CRM->ctrl&=0xFEF2FFFF;//复位HSEON,HSEBYPCSSON,PLLONCRM->cfg&=0xFF80FFFF;//复位PLLSRC,PLLXTPRE,PLLMUL[3:0]andUSBPRECRM->clkint=0x00000000;//关闭所有中断BOOT_P_Quit();//执行跳转}

    SRAM boot程序 4K

    2026-10-09 0