STM32单片机程序启动

来源:互联网 发布:彻地钉db数据 编辑:程序博客网 时间:2024/05/24 05:10

       ARM7和ARM9内核启动时从绝对地址0X00000000开始执行复位中断程序,即固定了复位后的起始地址,但中断向量表的位置是可变的。

       STM32内核则不同,M3内核规定起始地址必须存放栈顶地址,第二个地址必须是复位中断向量的入口地址,这样CPU复位后会自动从下一个32位地址取出复位中断向量的入口地址,PC就跳转到中断服务程序,所以M3是固定了中断向量表的位置而起始地址是可变的。 
       M3的中断向量表有三个位置,通过BOOT引脚进行启动设置。

       BOOT1=x BOOT0=0 从用户闪存启动,这是正常的工作模式。中断向量表定位于FLASH区,复PC=0x80000000. 
       BOOT1=0 BOOT0=1 从系统存储器启动(相当于厂家在存储器中固化了BOOTLOADER),这种模式启动的程序功能由厂家设置。 
       BOOT1=1 BOOT0=1 从内置SRAM启动,这种模式可以用于调试。这种模式下,中断向量表位于SRAM区,起始地址为0x20000000.复位为PC=0x20000000. 


所以,若电路板将BOOT引脚配置为BOOT1=X,BOOT0=0,则程序一定从0x80000000开始执行。

0 0