关于uCOSiii使用__get_MSP()返回主堆栈指针的当前值出现的问题
我的uCOSiii的版本是: V3.03.01
void STACK_Init(void)
{
Used_STACK_SIZE=0;
STACK_BOTTOM=*(vu32 *)STM32_FLASH_BASE_ADDRESS1;//取APP的SP初值
STACK_TOP1=STACK_BOTTOM;
}
//函数功能:在中断函数里调用该函数,获取过去"最大使用栈的大小"
void Get_Used_STACK_SIZE(void)
{
STACK_TOP2=__get_PSP();
//返回进程堆栈指针
//Return the Process Stack Pointer
STACK_TOP1=__get_MSP();
//返回主堆栈指针的当前值
//Return the current value of the MSP (main stack pointer)
}
打印如下:
STACK_BOTTOM: 0x20008340
STACK_TOP2: 0x20003730
STACK_TOP1: 0x200009bc
程序工作顺畅,但是STACK_TOP1=__get_MSP();
为什么不是“0x20007340< STACK_TOP1 <0x20008340”,不知道什么原因?
uCOSii没有发现这种问题。
测试结果见图:
若有知道的,请给我留言。