单片机)"/>
如何监测栈需要多少才够用(单片机)
原理:在栈哪里先写特定的值,以一定间隔去监测特定值是否存在。
float CortexM_StackCheck(void)
{static int IsFirstCheck = 1;uint32_t i;TempStartAddr = ((uint32_t)Stack_Mem);TempStackSize = ((uint32_t)Stack_Size);//µÚÒ»´ÎÖ´Ðд˺¯Êý.//¼ì²é´Ëʱ´Ë¿ÌÊÇ·ñÕ»Òç³ö,²¢ÔÚÕ»µ×É趨¼ì²é±êÖ¾.if(0 != IsFirstCheck){//ÓÐ×ã¹»µÄ¿Õ¼äÓÃÓÚÌîÈë¼ì²éÓõÄÊý¾Ý.for(i=0; i<TempStackSize/4; i+=4){//ÌîÈëÊý¾Ý*((uint32_t*)Stack_Mem + i) = CheckKey;}//±ê¼ÇÒѾÌîÈëÁËÊý¾Ý,ÒÔºó¾Í²»À´ÕâÀïÍæÁË.IsFirstCheck = 0;//OKreturn 0;}else //Ç°ÃæÒѾÂñÏÂÁ˺ö«Î÷,¿´¿´»¹ÔÚ²»ÔÚ...{for(i=0; i<TempStackSize/4; i+=4){if(CheckKey != *((uint32_t*)Stack_Mem + i))break;}}TempStackUsed = (TempStackSize - (i*4))/1024.0f;return TempStackUsed;
}
更多推荐
如何监测栈需要多少才够用(单片机)
发布评论