瑞萨单片机论坛
直播中

lustao

13年用户 626经验值
擅长:嵌入式技术
私信 关注
[经验]

【RA4E2开发板评测】电压检测器 ThreadX显示量程0-3300 mV+CPU利用率+任务当前使用栈

续前【RA4E2开发板评测】电压检测器 ThreadX显示量程0-3300 mV
了解系统使用情况对于系统优化和配置特别重要。
ThreadX 的 CPU 利用率主要是通过创建一个统计任务和一个空闲任务来实现。
任务当前使用栈是通过任务控制列表检索所有创建的任务实现。因为是开发用可以在展示产品时取消这个代码。

keil编程部分

在已经产生文件目录:

中打开lu.uvprojx

准备在printf_Task_Task.c中加入需要代码在其他进程先tx_thread_sleep(1000)后恢复

#include "printf_Task.h"



#include "uart/uart.h"

/*
*******************************************************************************************************
*                               ±äÁ¿
*******************************************************************************************************
*/
static  TX_MUTEX   AppPrintfSemp;	/* ÓÃÓÚprintf»¥³â */
//extern void SysTick_ISR(void);
//#define bsp_ProPer1ms  SysTick_ISR

/* ͳ¼ÆÈÎÎñʹÓà */
__IO uint8_t   OSStatRdy;        /* ͳ¼ÆÈÎÎñ¾ÍÐ÷±êÖ¾ */
__IO uint32_t  OSIdleCtr;        /* ¿ÕÏÐÈÎÎñ¼ÆÊý */
__IO float     OSCPUUsage;       /* CPU°Ù·Ö±È */
uint32_t       OSIdleCtrMax;     /* 1ÃëÄÚ×î´óµÄ¿ÕÏмÆÊý OS CPU OSIdleCtrMax = 8224 250906      OS CPU OSIdleCtrMax = 8320 250907 */
uint32_t       OSIdleCtrRun;     /* 1ÃëÄÚ¿ÕÏÐÈÎÎñµ±Ç°¼ÆÊý */




 volatile bool scan_0_3V3_flag= false;
 extern volatile bool TBE ;
 static  TX_THREAD   AppTaskIdleTCB;
static  uint64_t    AppTaskIdleStk[256/8];

static  TX_THREAD   AppTaskStatTCB;
static  uint64_t    AppTaskStatStk[512/8];
//static  TX_THREAD   AppTaskStartTCB;
//static  uint64_t    AppTaskStartStk[1024/8];
/*
*********************************************************************************************************
*	º¯ Êý Ãû: AppTaskStart
*	¹¦ÄÜ˵Ã÷: Æô¶¯ÈÎÎñ¡£
*	ÐÎ    ²Î: thread_input ÊÇÔÚ´´½¨¸ÃÈÎÎñʱ´«µÝµÄÐβÎ
*	·µ »Ø Öµ: ÎÞ
	ÓÅ ÏÈ ¼¶: 2
*********************************************************************************************************
*/
//static  void  AppTaskStart (ULONG thread_input)
//{
//	(void)thread_input;

//	        tx_thread_sleep(1000);
//    while (1)
//	{  
//		/* ÐèÒªÖÜÆÚÐÔ´¦ÀíµÄ³ÌÐò£¬¶ÔÓ¦Âã»ú¹¤³Ìµ÷ÓõÄSysTick_ISR */
////        bsp_ProPer1ms();
//        tx_thread_sleep(1);
//    }
//}
 /*
*********************************************************************************************************
*	º¯ Êý Ãû: AppTaskStatistic
*	¹¦ÄÜ˵Ã÷: ͳ¼ÆÈÎÎñ£¬ÓÃÓÚʵÏÖCPUÀûÓÃÂʵÄͳ¼Æ¡£ÎªÁ˲âÊÔ¸ü¼Ó׼ȷ£¬¿ÉÒÔ¿ªÆô×¢Ê͵÷ÓõÄÈ«¾ÖÖжϿª¹Ø
*	ÐÎ    ²Î: thread_input ´´½¨¸ÃÈÎÎñʱ´«µÝµÄÐβΠ
*	·µ »Ø Öµ: ÎÞ
*   ÓÅ ÏÈ ¼¶: 30
*********************************************************************************************************
*/
void  OSStatInit (void)
{
	OSStatRdy = 0;
	
    tx_thread_sleep(2u);        /* ʱÖÓͬ²½ */
	
    //__disable_irq();
    OSIdleCtr    = 0uL;         /* Çå¿ÕÏмÆÊý */
	//__enable_irq();
	
    tx_thread_sleep(100);       /* ͳ¼Æ100msÄÚ£¬×î´ó¿ÕÏмÆÊý */
	
   	//__disable_irq();
	OSIdleCtrMax = 8320; 
	if (OSIdleCtr>8320)    OSIdleCtrMax = OSIdleCtr;   /* ±£´æ×î´ó¿ÕÏмÆÊý */
	
    OSStatRdy    = 1;
	//__enable_irq();
}

static void AppTaskStat(ULONG thread_input)
{
	(void)thread_input;

    while (OSStatRdy == 0) 
	{
        tx_thread_sleep(200);     /* µÈ´ýͳ¼ÆÈÎÎñ¾ÍÐ÷ */
    }

    OSIdleCtrMax /= 100uL;
    if (OSIdleCtrMax == 0uL) 
	{
        OSCPUUsage = 0u;
    }
	
    //__disable_irq();
    OSIdleCtr = OSIdleCtrMax * 100uL;  /* ÉèÖóõʼCPUÀûÓÃÂÊ 0% */
	//__enable_irq();
	
    for (;;) 
	{
       // __disable_irq();
        OSIdleCtrRun = OSIdleCtr;    /* »ñµÃ100msÄÚ¿ÕÏмÆÊý */
        OSIdleCtr    = 0uL;          /* ¸´Î»¿ÕÏмÆÊý */
       //	__enable_irq();            /* ¼ÆËã100msÄÚµÄCPUÀûÓÃÂÊ */
        OSCPUUsage   = (100uL - (float)OSIdleCtrRun / OSIdleCtrMax);
        tx_thread_sleep(100);        /* ÿ100msͳ¼ÆÒ»´Î */
    }
}

/*
*********************************************************************************************************
*	º¯ Êý Ãû: AppTaskIDLE
*	¹¦ÄÜ˵Ã÷: ¿ÕÏÐÈÎÎñ
*	ÐÎ    ²Î: thread_input ´´½¨¸ÃÈÎÎñʱ´«µÝµÄÐβÎ
*	·µ »Ø Öµ: ÎÞ
	ÓÅ ÏÈ ¼¶: 31
*********************************************************************************************************
*/
static void AppTaskIDLE(ULONG thread_input)
{	
  TX_INTERRUPT_SAVE_AREA

  (void)thread_input;
	
  while(1)
  {
	   TX_DISABLE
       OSIdleCtr++;
	   TX_RESTORE
  }			  	 	       											   
}

/*
*********************************************************************************************************
*	º¯ Êý Ãû: AppTaskCreate
*	¹¦ÄÜ˵Ã÷: ´´½¨Ó¦ÓÃÈÎÎñ
*	ÐÎ    ²Î: ÎÞ
*	·µ »Ø Öµ: ÎÞ
*********************************************************************************************************
*/
static  void  AppTaskCreate (void)
{
		/*
	   Èç¹ûʵÏÖÈÎÎñCPUÀûÓÃÂÊͳ¼ÆµÄ»°£¬´Ëº¯Êý½öÓÃÓÚʵÏÖÆô¶¯ÈÎÎñ£¬Í³¼ÆÈÎÎñºÍ¿ÕÏÐÈÎÎñ£¬ÆäËüÈÎÎñÔÚº¯Êý
	   AppTaskCreateÀïÃæ´´½¨¡£
	*/
	/**************´´½¨Æô¶¯ÈÎÎñ*********************/
//    tx_thread_create(&AppTaskStartTCB,              /* ÈÎÎñ¿ØÖÆ¿éµØÖ· */   
//                       "App Task Start",              /* ÈÎÎñÃû */
//                       AppTaskStart,                  /* Æô¶¯ÈÎÎñº¯ÊýµØÖ· */
//                       0,                             /* ´«µÝ¸øÈÎÎñµÄ²ÎÊý */
//                       &AppTaskStartStk[0],            /* ¶ÑÕ»»ùµØÖ· */
//                       1024,    /* ¶ÑÕ»¿Õ¼ä´óС */  
//                       2,        /* ÈÎÎñÓÅÏȼ¶*/
//                       2,        /* ÈÎÎñÇÀÕ¼·§Öµ */
//                       TX_NO_TIME_SLICE,               /* ²»¿ªÆôʱ¼äƬ */
//                       TX_AUTO_START);                 /* ´´½¨ºóÁ¢¼´Æô¶¯ */
	/**************´´½¨Í³¼ÆÈÎÎñ*********************/
    tx_thread_create(&AppTaskStatTCB,               /* ÈÎÎñ¿ØÖÆ¿éµØÖ· */    
                       "App Task STAT",              /* ÈÎÎñÃû */
                       AppTaskStat,                  /* Æô¶¯ÈÎÎñº¯ÊýµØÖ· */
                       0,                           /* ´«µÝ¸øÈÎÎñµÄ²ÎÊý */
                       &AppTaskStatStk[0],           /* ¶ÑÕ»»ùµØÖ· */
                       512,    /* ¶ÑÕ»¿Õ¼ä´óС */  
                       30,        /* ÈÎÎñÓÅÏȼ¶*/
                       30,        /* ÈÎÎñÇÀÕ¼·§Öµ */
                       TX_NO_TIME_SLICE,             /* ²»¿ªÆôʱ¼äƬ */
                       TX_AUTO_START);               /* ´´½¨ºóÁ¢¼´Æô¶¯ */
					   
				   
	/**************´´½¨¿ÕÏÐÈÎÎñ*********************/
    tx_thread_create(&AppTaskIdleTCB,               /* ÈÎÎñ¿ØÖÆ¿éµØÖ· */    
                       "App Task IDLE",              /* ÈÎÎñÃû */
                       AppTaskIDLE,                  /* Æô¶¯ÈÎÎñº¯ÊýµØÖ· */
                       0,                           /* ´«µÝ¸øÈÎÎñµÄ²ÎÊý */
                       &AppTaskIdleStk[0],           /* ¶ÑÕ»»ùµØÖ· */
                       256,    /* ¶ÑÕ»¿Õ¼ä´óС */  
                       31,        /* ÈÎÎñÓÅÏȼ¶*/
                       31,        /* ÈÎÎñÇÀÕ¼·§Öµ */
                       TX_NO_TIME_SLICE,             /* ²»¿ªÆôʱ¼äƬ */
                       TX_AUTO_START);               /* ´´½¨ºóÁ¢¼´Æô¶¯ */

}

/*
*********************************************************************************************************
*	º¯ Êý Ãû: AppObjCreate
*	¹¦ÄÜ˵Ã÷: ´´½¨ÈÎÎñͨѶ
*	ÐÎ    ²Î: ÎÞ
*	·µ »Ø Öµ: ÎÞ
*********************************************************************************************************
*/
static  void  AppObjCreate (void)
{
	 /* ´´½¨»¥³âÐźÅÁ¿ */
    tx_mutex_create(&AppPrintfSemp,"AppPrintfSemp",TX_NO_INHERIT);
}

 
 
 
 
 
 
/*
*********************************************************************************************************
*	º¯ Êý Ãû: DispTaskInfo
*	¹¦ÄÜ˵Ã÷: ½«ThreadXÈÎÎñÐÅϢͨ¹ý´®¿Ú´òÓ¡³öÀ´
*	ÐÎ    ²Î£ºÎÞ
*	·µ »Ø Öµ: ÎÞ
*********************************************************************************************************
*/
static void DispTaskInfo(void)
{
	TX_THREAD      *p_tcb;	        /* ¶¨ÒåÒ»¸öÈÎÎñ¿ØÖÆ¿éÖ¸Õë */

    p_tcb = &AppTaskStatTCB;
	
	/* ´òÓ¡±êÌâ */
	    tx_mutex_get(&AppPrintfSemp, TX_WAIT_FOREVER);

    printf("===============================================================\r\n");

    tx_mutex_put(&AppPrintfSemp);			
		    tx_mutex_get(&AppPrintfSemp, TX_WAIT_FOREVER);

    printf("OS CPU Usage = %5.2f%% OSCPUUsage   = (100uL - (float)OSIdleCtrRun / OSIdleCtrMax);	\r\n", OSCPUUsage);
        
    printf("OS CPU OSIdleCtrRun = %d\r\n", OSIdleCtrRun);
    printf("OS CPU OSIdleCtrMax = %d\r\n", OSIdleCtrMax);	
    tx_mutex_put(&AppPrintfSemp);	
		    tx_mutex_get(&AppPrintfSemp, TX_WAIT_FOREVER);

    printf("===============================================================\r\n");

    tx_mutex_put(&AppPrintfSemp);	
		    tx_mutex_get(&AppPrintfSemp, TX_WAIT_FOREVER);

    printf(" ÈÎÎñÓÅÏȼ¶ ÈÎÎñÕ»´óС µ±Ç°Ê¹ÓÃÕ»  ×î´óջʹÓà   ÈÎÎñÃû\r\n");

    tx_mutex_put(&AppPrintfSemp);	
			    tx_mutex_get(&AppPrintfSemp, TX_WAIT_FOREVER);

    printf("   Prio     StackSize   CurStack    MaxStack   Taskname\r\n");

    tx_mutex_put(&AppPrintfSemp);	


		
//	App_Printf("===============================================================\r\n");
//	App_Printf("OS CPU Usage = %5.2f%%\r\n", OSCPUUsage);
//	App_Printf("===============================================================\r\n");
//	App_Printf(" ÈÎÎñÓÅÏȼ¶ ÈÎÎñÕ»´óС µ±Ç°Ê¹ÓÃÕ»  ×î´óջʹÓà   ÈÎÎñÃû\r\n");
//	App_Printf("   Prio     StackSize   CurStack    MaxStack   Taskname\r\n");

	/* ±éÀúÈÎÎñ¿ØÖÆÁбíTCB list)£¬´òÓ¡ËùÓеÄÈÎÎñµÄÓÅÏȼ¶ºÍÃû³Æ */
	while (p_tcb != (TX_THREAD *)0) 
	{
				    tx_mutex_get(&AppPrintfSemp, TX_WAIT_FOREVER);

    printf("   %2d        %5d      %5d       %5d      %s\r\n", 
                    p_tcb->tx_thread_priority,
                    p_tcb->tx_thread_stack_size,
                    (int)p_tcb->tx_thread_stack_end - (int)p_tcb->tx_thread_stack_ptr,
                    (int)p_tcb->tx_thread_stack_end - (int)p_tcb->tx_thread_stack_highest_ptr,
                    p_tcb->tx_thread_name);
printf("                                    %5d       \r\n",  (int)p_tcb->tx_thread_stack_highest_ptr);
    tx_mutex_put(&AppPrintfSemp);		



        p_tcb = p_tcb->tx_thread_created_next;

        if(p_tcb == &AppTaskStatTCB) break;
	}
}
/* printF entry function */

                void printf_Task_entry(void)
                {
									


	/* Äں˿ªÆôºó£¬»Ö¸´HALÀïµÄʱ¼ä»ù×¼ */
//    HAL_ResumeTick();
	
                    /* TODO: add your own code here */
uint8_t buffer[7];
    double a0; 
uint8_t 	* bufferQ=buffer;	

    uint32_t num = 0;
    uint32_t adcValue = 0;
    static bool adc_task_active = true;
	bool display_flag;
    /* Initializing UART */
    uart_initialize();
	/* ´´½¨ÈÎÎñ */
    AppTaskCreate(); 
	/* ´´½¨ÈÎÎñ¼äͨÐÅ»úÖÆ */
	AppObjCreate();	
										/* ÓÅÏÈÖ´ÐÐÈÎÎñͳ¼Æ */
										tx_thread_sleep(10); 
	OSStatInit();
									int i=0;	
    while(true)
    {			


i++;
//TX_NO_INSTANCEÊÇThreadX¶¨ÒåµÄ³£Á¿£¬±íʾÐźÅÁ¿ÊµÀý²»´æÔÚ
//µ±º¯Êý·µ»ØTX_NO_INSTANCEʱ£¬±íʾϵͳÎÞ·¨ÕÒµ½ÃûΪsemphr_keyChangedµÄÐźÅÁ¿ÊµÀý¡£Õâͨ³£Òâζ×Å£º

//ÐźÅÁ¿ÉÐδ±»´´½¨
//ÐźÅÁ¿Ãû³ÆÆ´Ð´´íÎó
//ÐźÅÁ¿Òѱ»É¾³ý
//ÕâÖÖ¼ì²éÔÚÐèҪȷ±£ÐźÅÁ¿´æÔÚºó²ÅÄܰ²È«Ê¹Óõij¡¾°Öкܳ£¼û¡£
    if (tx_semaphore_get (&semphr_keyChanged, 0) == TX_NO_INSTANCE)
    {

    }
		else

      {scan_0_3V3_flag=!scan_0_3V3_flag;
//				printf("!scan_0_3V3_flag;S_key    1 \r\n");
      }
			tx_thread_sleep(10);
			if(i==6000){
					 DispTaskInfo();
			i=0;
			}
			        if (tx_queue_receive (&queue_adcValue, &num, 0) == TX_SUCCESS )
        {

					printf("ADC:%d\r\n", num);
					a0 = (double)(num*3.3/4095);
					printf("ADC:%%.3f V\r\n", a0);
						 buffer[3]=(uint8_t *)(num>8);	 
	 buffer[4]=(uint8_t *)(num&0xff);
						 buffer[0]=0xff;
	 buffer[1]=0xfe;	 
	 buffer[2]=0x01;
	 buffer[5]=0x0;	
					   TBE = false;
					   R_SCI_UART_Write(&g_uart0_ctrl,  bufferQ, 6);

   while(TBE == false);
					   TBE = false;

        }
    }		



		

    }

/*
*********************************************************************************************************
*	º¯ Êý Ãû: App_Printf
*	¹¦ÄÜ˵Ã÷: Ḭ̈߳²È«µÄprintf·½Ê½		  			  
*	ÐÎ    ²Î: ͬprintfµÄ²ÎÊý¡£
*             ÔÚCÖУ¬µ±ÎÞ·¨Áгö´«µÝº¯ÊýµÄËùÓÐʵ²ÎµÄÀàÐͺÍÊýĿʱ,¿ÉÒÔÓÃÊ¡ÂÔºÅÖ¸¶¨²ÎÊý±í
*	·µ »Ø Öµ: ÎÞ
*********************************************************************************************************
*/
//static  void  App_Printf(const char *fmt, ...)
//{
//    char  buf_str[200 + 1]; /* ÌØ±ð×¢Ò⣬Èç¹ûprintfµÄ±äÁ¿½Ï¶à£¬×¢Òâ´Ë¾Ö²¿±äÁ¿µÄ´óСÊÇ·ñ¹»Óà */
//    va_list   v_args;


//    va_start(v_args, fmt);
//   (void)vsnprintf((char       *)&buf_str[0],
//                   (size_t      ) sizeof(buf_str),
//                   (char const *) fmt,
//                                  v_args);
//    va_end(v_args);

//	/* »¥³â²Ù×÷ */
//    tx_mutex_get(&AppPrintfSemp, TX_WAIT_FOREVER);

//    printf("%s", buf_str);

//    tx_mutex_put(&AppPrintfSemp);					 
//}

‘在hal_entry.c不需要加入任何代码所有与os有关代码由[瑞萨]在生成项目时完成了.’

这次编译没有出错

compiling vector_data.c...
linking...
Program Size: Code=17468 RO-data=908 RW-data=2320 ZI-data=12148  
FromELF: creating hex file...
After Build - User command #1: cmd /c ""E:\lst\ra4l1\ra4-e2-64\FSP_Project\rasc_launcher.bat" "E:\lst\ra4l1\ra4-e2-64\FSP_Project\rasc_version.txt" -nosplash --launcher.suppressErrors --gensmartbundle --compiler ARMv6 --devicefamily ra "E:\lst\ra4l1\ra4-e2-64\FSP_Project\configuration.xml" "E:\lst\ra4l1\ra4-e2-64\FSP_Project\Objects\FSP_Project.axf" 2> "%TEMP%\rasc_stderr.out""
[INFO] Input file "E:\lst\ra4l1\ra4-e2-64\FSP_Project\Objects\FSP_Project.axf" is newer than output file "E:\lst\ra4l1\ra4-e2-64\FSP_Project\Objects\FSP_Project.sbd". Proceeding with RASC invocation...
Generating Smart Bundle..
".\Objects\FSP_Project.axf" - 0 Error(s), 478 Warning(s).
Build Time Elapsed:  00:00:56

rfp-cli.exe命令行烧录部分

  • MODE CONFIG**MODE配置成sci boot模式
  • 连接带自己USB-com接口tx,rx到usb未标题-1 拷贝.jpg
  • tmp_fa46ecf6b5972cfa1e0632d2e2c6dc13.jpg

*找到编译后hex文件\FSP_Project\Objects\FSP_Project.hex并copy到Renesas Flash软件安后目录
用type-c usb 连接线连接开发板和电脑在设备管理器找到com口号为com5
在Renesas Flash软件安后目录打开命令窗口每次发送命令前最好按一下复位。运行各命令。
命令rfp-cli -d RA -lp 查看可以用com口

Renesas Flash Programmer CLI V1.12
Module Version: V3.19.00.000

[Port]
COM5
COM6
COM7

命令 rfp-cli -d RA -port COM5 -ls查看可以用速度

Renesas Flash Programmer CLI V1.12
Module Version: V3.19.00.000

Connecting the tool (COM port)
Tool: COM5
Interface: 2 wire UART

Connecting the target device

Disconnecting the tool[Speed]
9600
115200

命令 rfp-cli -d RA -port COM5 -sig查看目标信息

Renesas Flash Programmer CLI V1.12
Module Version: V3.19.00.000

Connecting the tool (COM port)
Tool: COM5
Interface: 2 wire UART

Connecting the target device
Speed: 115,200 bps
Connected to R7FA4E2B93CFM

Signature:
    Device: R7FA4E2B93CFM
    Boot Firmware Version: V7.0.0
    Device Unique ID: 4E4B2D5C5B634B533539393742037771
    Device Code: 05

Memory Info:
    00000000 - 0000FFFF: Code Flash 1 (Block Size: 8 KB)
    00010000 - 0001FFFF: Code Flash 1 (Block Size: 32 KB)
    08000000 - 08000FFF: Data Flash 1 (Block Size: 64)
    0100A100 - 0100A2FF: Config Area 1 (Block Size: 512)


Disconnecting the tool

Operation successful

命令rfp-cli -d RA -port COM5 -file FSP_Project.hex -p 烧录

Renesas Flash Programmer CLI V1.12
Module Version: V3.19.00.000
Load: "E:\Renesas Electronics\Programming Tools\Renesas Flash Programmer V3.19\FSP_Project.hex" (Size=42459, CRC=68D14AFE)

Connecting the tool (COM port)
Tool: COM5
Interface: 2 wire UART

Connecting the target device
Speed: 115,200 bps
Connected to R7FA4E2B93CFM

Erasing the target device
  [Code Flash 1]       00000000 - 00003FFF
Writing data to the target device
  [Code Flash 1]       00000000 - 0000397F
  [Config Area 1]      0100A100 - 0100A17F
  [Config Area 1]      0100A200 - 0100A2FF


Disconnecting the tool

Operation successful

未标题-1 副本.jpg

命令rfp-cli -d RA -port COM5 -rv 0 10 读取目标地址 数量数据

Renesas Flash Programmer CLI V1.12
Module Version: V3.19.00.000

Connecting the tool (COM port)
Tool: COM5
Interface: 2 wire UART

Connecting the target device
Speed: 115,200 bps
Connected to R7FA4E2B93CFM

Reading data from the device
  [Code Flash 1]       00000000 - 00000009

Address  | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
---------+------------------------------------------------
00000000 | 20 37 00 8D 12 0C 00 00 F9 08



Disconnecting the tool

Operation successful
  • 文件前16字节203700208D120000F9080000FD070000

烧录数据正确成功
MODE CONFIG
*MODE
配置成flash模式,运行成功
com显示

S_key    1 
ADC:174
ADC:0.140 V
?ADC:2536
ADC:2.044 V
?ADC:2328
ADC:1.876 V
?ADC:466
ADC:0.376 V
?ADC:3198
ADC:2.577 V
?~ADC:746
ADC:0.601 V
?ADC:2676
ADC:2.156 V
?t===============================================================
OS CPU Usage = 23.03% OSCPUUsage   = (100uL - (float)OSIdleCtrRun / OSIdleCtrMax);	
OS CPU OSIdleCtrRun = 640397
OS CPU OSIdleCtrMax = 8320
===============================================================
 任务优先级 任务栈大小 当前使用栈  最大栈使用   任务名
   Prio     StackSize   CurStack    MaxStack   Taskname
   30          512        243       536874407      App Task STAT
                                        0       
   31          256         83       536873719      App Task IDLE
                                        0       
    2          256        107       536872207      KeySwitch
                                        0       
    2         1024        251       536871951      ADC_Voltage
                                        0       
    1         1024        283       536873231      printF
                                        0       
ADC:2183
ADC:1.759 V

与FreeRTOS相同线程相比,编程更简便,ro rw rom Size都更小。

达到预期状态。

更多回帖

发帖
×
20
完善资料,
赚取积分