STM32F10xxC Boot 程序跳到 APP 程序CSTACK栈溢出
Boot 内存分配:
0x08000000 --- 0x080001FF Boot中断向量表
0x08000200 --- 0x08007FFF Boot程序
APP 内存分配:
0x08008000 --- 0x080081FF APP中断向量表
0x08008200 --- 0x0803FFFF APP程序
现状:
单独把Boot 程序或者单独把APP程序下载到STM32F10xxC片内FLASH里都可以正常运行,没有报CSTACK溢出警告,但是通过BOOT程序,把APP程序烧写到指定片内FLASH处,会报CSTACK溢出警告。警告发生在BOOT程序跳到APP程序的时候,跳到APP程序也可以正常运行,但是当我创建两个任务后,调用OSStart()后,程序会跑到HardFault_Handler中断函数中,我觉得造成这个问题的主要原因是因为CSTACK栈溢出,但是没有找到具体原因。
JumpAddress = *(volatile INT32U*) (ApplicationAddress + 4);
Jump_To_Application = (pFunction) JumpAddress;
//初始化用户程序的堆栈指针
__set_MSP(*(volatile INT32U*) ApplicationAddress);
Jump_To_Application();