Цитата(bseyur @ May 3 2010, 16:00)

А изначально стек где находился?
На счет регистра LR вы не правы. При переходе в режим исключительной ситуации адрес возврата нужно выгребать из верхушки стека. LR предоставляет всего лишь информацию о режиме, в котором находилось ядро до возникновения исключения.
Я в этом совсем "зеленый". Вот код из startup_stm32f10x_hd.s
Код
; Reset handler routine
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT __main
LDR R0, = SystemInit_ExtMemCtl; initialize external memory controller
BLX R0
LDR R1, = __initial_sp ; restore original stack pointer
MSR MSP, R1
LDR R0, =__main
BX R0
ENDP
После сброса стек в 0x20000400. После команды MSR в MSP загружается 0x64000400. Потому что в свойствах проекта я задал, что есть внешнее ОЗУ по адресу 0x64000000 размером 0x40000. Есть и еще пара устройств на шине. Почему стек прицепился к этой области, мне невдомек.
Потом скачет в main и где-то там заскакивает в HardFault.