从洪荒时代,要启航到原始社会了,准备。
那么stm32f1 cpu上电后第一条指令__reset代码:
_ASM_FILE_PROLOGUE
GTEXT(__reset)
/* lock interrupts: will get unlocked when switch to main task */
movs.n r0, #_EXC_IRQ_DEFAULT_PRIO //默认优先级
msr BASEPRI, r0<span style="white-space:pre"> </span>//设置BASEPRI(基本优先级),当优先级不小于这个值时,cpu不处理异常
/*
* Set PSP and use it to boot without using MSP, so that it
* gets set to _interrupt_stack during nanoInit().
*/
ldr r0, =__CORTEXM_BOOT_PSP
msr PSP, r0 <span style="font-family: Arial, Helvetica, sans-serif;">//设置PSP为sdram的末端0x100个字节。</span>
movs.n r0, #2 /* switch to using PSP (bit1 of CONTROL reg) */
msr CONTROL, r0//使能PSP作为堆栈指针
#ifdef CONFIG_WDOG_INIT
/* board-specific watchdog initialization is necessary */
bl _WdogInit //如果有加看门狗,初始化看门狗哟,移置之初,关掉它嘛。
#endif
b _Prep