STM32F76X IAP程序栈顶地址范围问题
在做STM32F76X的IAP程序时,检查判断是否下载用户程序的栈顶地址范围是多少,谢谢!
/* Test if user code is programmed starting from address "APPLICATION_ADDRESS" */
/*APP中把中断向量表放在首地址,而中断向量表里存放
的第一个就是栈顶的地址可见启动文件,判断栈顶地址是否在范围之内*/
if (((*(__IO uint32_t*)APPLICATION_ADDRESS) & 0x2FFE0000 ) == 0x20020000)
/*这里我查到的其他资料都是0X20000000,但是实际调试的时候都是0X20020000*/
{
/* Jump to user application */
/*中断向量表第二项存放复位地址*/
JumpAddress = *(__IO uint32_t*) (APPLICATION_ADDRESS + 4);
/*指向复位地址*/
JumpToApplication = (pFunction) JumpAddress;
/* Initialize user application's Stack Pointer */
/*设置主函数栈指针*/
__set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);
/*执行复位函数后续跳转到main函数见启动文件*/
JumpToApplication();
}
启动文件
Stack_Size EQU 0x8000
AREA STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem SPACE Stack_Size
__initial_sp
; <h> Heap Configuration
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Heap_Size EQU 0x1000
AREA HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem SPACE Heap_Size
__heap_limit