17-查看单片机的栈地址使用情况
查看单片机的栈地址使用情况
#define STACK_FILL_PATTERN 0xDEADBEEF
extern uint32_t _sstack;
extern uint32_t _estack;
/* 系统启动时调用 mian最开始调用,或者在复位中断调用,目的是填充特定字节,方便检查*/
void Initialize_Stack(void)
{uint32_t *stack_ptr = &_sstack;while(stack_ptr < &_estack) {*stack_ptr++ = STACK_FILL_PATTERN;}
}
uint32_t Get_Stack_Usage(void)
{uint32_t *stack_ptr = &_sstack;uint32_t used_bytes = 0;while(stack_ptr < &_estack) {if(*stack_ptr != STACK_FILL_PATTERN) {break;}stack_ptr++;used_bytes += 4; /* 每个指针4字节 */}return used_bytes;
}