国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32 Hal庫(kù)FreeRTOS統(tǒng)計(jì)CPU占比 找出有問題的任務(wù) 僅需一個(gè)函數(shù)搞定 超簡(jiǎn)單

這篇具有很好參考價(jià)值的文章主要介紹了STM32 Hal庫(kù)FreeRTOS統(tǒng)計(jì)CPU占比 找出有問題的任務(wù) 僅需一個(gè)函數(shù)搞定 超簡(jiǎn)單。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、實(shí)現(xiàn)目標(biāo)

STM32F103 基于Hal庫(kù)跑FreeRTOS,統(tǒng)計(jì)CPU占比 找出有問題的任務(wù),類似實(shí)現(xiàn)一個(gè)windows 系統(tǒng)的任務(wù)查看界面。STM32 Hal庫(kù)FreeRTOS統(tǒng)計(jì)CPU占比 找出有問題的任務(wù) 僅需一個(gè)函數(shù)搞定 超簡(jiǎn)單,stm32,嵌入式硬件,單片機(jī)

代碼運(yùn)行結(jié)果如下

STM32 Hal庫(kù)FreeRTOS統(tǒng)計(jì)CPU占比 找出有問題的任務(wù) 僅需一個(gè)函數(shù)搞定 超簡(jiǎn)單,stm32,嵌入式硬件,單片機(jī)

二、思路

記錄任務(wù)的時(shí)間點(diǎn),相減獲得任務(wù)所占用的時(shí)間,所得時(shí)間/總時(shí)間,得到該CPU占比。?

三、實(shí)現(xiàn)函數(shù)

只需要調(diào)用一個(gè)vTaskGetRunTimeStats:獲得任務(wù)的運(yùn)行信息,形式為可讀的字符串。

void vTaskGetRunTimeStats( signed char *pcWriteBuffer );

四、操作步驟

1、連接串口后,在freertos.c里面定義一個(gè)全局變量,存在所有任務(wù)的棧的信息,注意,pcWriteBuffer必須足夠大。

static signed char pcWriteBuffer[200];

2、保證如下條件成立

#if ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )

一般條件1和條件3是默認(rèn)成立的,如果條件2的宏定義是0(#define configUSE_STATS_FORMATTING_FUNCTIONS? ? ?0),需要配置STM32CubeMX,將其使能,如下圖所示。?STM32 Hal庫(kù)FreeRTOS統(tǒng)計(jì)CPU占比 找出有問題的任務(wù) 僅需一個(gè)函數(shù)搞定 超簡(jiǎn)單,stm32,嵌入式硬件,單片機(jī)

3、使能鉤子函數(shù),USE_IDLE_HOOK
在配置STM32CubeMX將其使能,如下圖所示。

STM32 Hal庫(kù)FreeRTOS統(tǒng)計(jì)CPU占比 找出有問題的任務(wù) 僅需一個(gè)函數(shù)搞定 超簡(jiǎn)單,stm32,嵌入式硬件,單片機(jī)

4、使能 configGENERATE_RUN_TIME_STATS

在配置STM32CubeMX將其使能,如下圖所示。?

STM32 Hal庫(kù)FreeRTOS統(tǒng)計(jì)CPU占比 找出有問題的任務(wù) 僅需一個(gè)函數(shù)搞定 超簡(jiǎn)單,stm32,嵌入式硬件,單片機(jī)5、重新生成代碼

配置成功后,configGENERATE_RUN_TIME_STATS 會(huì)定義為1。

#define configGENERATE_RUN_TIME_STATS ? ? ? ? ? ?1

6、定時(shí)器的驅(qū)動(dòng)文件driver_timer.c 添加如下2個(gè)函數(shù)。uint64_t system_get_ns(void),實(shí)現(xiàn)弱函數(shù)unsigned long getRunTimeCounterValue(void)。

/**********************************************************************
 * 函數(shù)名稱: system_get_ns
 * 功能描述: 獲得系統(tǒng)時(shí)間(單位ns)
 * 輸入?yún)?shù): 無(wú)
 * 輸出參數(shù): 無(wú)
 * 返 回 值: 系統(tǒng)時(shí)間(單位ns)
 * 修改日期        版本號(hào)     修改人	      修改內(nèi)容
**********************************************************************/
uint64_t system_get_ns(void)
{
 
    extern TIM_HandleTypeDef        htim4;
    TIM_HandleTypeDef *hHalTim = &htim4;
    
    uint64_t ns = HAL_GetTick();
    uint64_t cnt;
    uint64_t reload;

    cnt = __HAL_TIM_GET_COUNTER(hHalTim);
    reload = __HAL_TIM_GET_AUTORELOAD(hHalTim);

    ns *= 1000000;
    ns += cnt * 1000000 / reload;
    return ns;
}

/* 返回系統(tǒng)啟動(dòng)后過了多少時(shí)間(單位us) */
unsigned long getRunTimeCounterValue(void)
{
     return system_get_ns() / 1000;
}

7、在鉤子函數(shù)void vApplicationIdleHook( void )改成如下代碼,獲得任務(wù)的運(yùn)行信息及打印結(jié)果。?

void vApplicationIdleHook( void )
{
   
	int i;
	//vTaskList(pcWriteBuffer);
	vTaskGetRunTimeStats(pcWriteBuffer);
	for (i = 0; i < 16; i++)
		printf("-");
	printf("\n\r");
	printf("%s\n\r", pcWriteBuffer);
}

8、運(yùn)行結(jié)果,可統(tǒng)計(jì)CPU占比,從占比大中,找出有問題的任務(wù)。

STM32 Hal庫(kù)FreeRTOS統(tǒng)計(jì)CPU占比 找出有問題的任務(wù) 僅需一個(gè)函數(shù)搞定 超簡(jiǎn)單,stm32,嵌入式硬件,單片機(jī)

9、備注-源碼和環(huán)境

源碼鏈接https://download.csdn.net/download/m0_37371085/88768311

單片機(jī):STM32F103c8tx

keil版本:5.32

STM32CubeMX版本:6.8.1文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-820813.html

到了這里,關(guān)于STM32 Hal庫(kù)FreeRTOS統(tǒng)計(jì)CPU占比 找出有問題的任務(wù) 僅需一個(gè)函數(shù)搞定 超簡(jiǎn)單的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • STM32 HAL FreeRTOS 硬件I2C 使用

    STM32 HAL FreeRTOS 硬件I2C 使用

    因?yàn)槟硞€(gè)項(xiàng)目想要顏色識(shí)別,去識(shí)別球的顏色,但是又不想多來(lái)個(gè)攝像頭,所以想嘗試一下顏色傳感器的方案。但是經(jīng)過嘗試,HAL庫(kù)生成的 FreeRTOS 硬件 I2C 讀寫一直在報(bào)錯(cuò)。 剛好手頭上有九軸陀螺儀的例程代碼。最后用FreeRTOS 硬件 I2C 讀取數(shù)據(jù)。 這里提到了阻塞式 HAL 函數(shù)(

    2024年02月20日
    瀏覽(25)
  • STM32+FREERTOS任務(wù)堆棧大小

    在FREERTOS任務(wù)開發(fā)過程中,由于不知道具體需要分配多大的任務(wù)堆棧大小,就需要在開始開發(fā)階段盡可能的多分配一些,不然在調(diào)試過程中會(huì)出現(xiàn)程序卡死或者數(shù)據(jù)通信異常的現(xiàn)象。 如何評(píng)估任務(wù)堆棧的分配大小問題,可以根據(jù)任務(wù)的規(guī)模以及所任務(wù)所需的數(shù)據(jù)空間大概進(jìn)行

    2024年02月16日
    瀏覽(21)
  • STM32FreeRTOS任務(wù)通知(STM32cube高效開發(fā))

    STM32FreeRTOS任務(wù)通知(STM32cube高效開發(fā))

    1、任務(wù)通知可模擬隊(duì)列和信號(hào)量 任務(wù)通知是FreeRTOS另外一種進(jìn)程間通信技術(shù)。不需要?jiǎng)?chuàng)建任何中間對(duì)象,可以直接從任務(wù)向任務(wù)或ISR向任務(wù)發(fā)送通知,傳遞一個(gè)通知值任務(wù)通知可以模擬二值信號(hào)量、計(jì)數(shù)信號(hào)量、或長(zhǎng)度為1的消息隊(duì)列,使用任務(wù)通知,一般效率更高,消耗內(nèi)

    2024年03月13日
    瀏覽(20)
  • stm32 freertos多任務(wù)狀態(tài)遷移,中斷臨界段,任務(wù)延時(shí)

    stm32 freertos多任務(wù)狀態(tài)遷移,中斷臨界段,任務(wù)延時(shí)

    arm中SP,LR,PC寄存器以及其它所有寄存器以及處理器運(yùn)行模式介紹 特權(quán)級(jí)與用戶級(jí)的區(qū)別主要是某些寄存器能不能訪問與修改: cortex M3/M4內(nèi)核 特權(quán)級(jí)與用戶級(jí)詳解 Cortex-M3雙堆棧MSP和PSP Cortex-M3雙堆棧MSP和PSP M3內(nèi)核何時(shí)使用MSP何時(shí)使用PSP? 特權(quán)級(jí)可以使用MSP 和PSP指針 用戶級(jí)

    2024年02月12日
    瀏覽(85)
  • STM32 CubeMX (Freertos任務(wù):創(chuàng)建、刪除、掛起、恢復(fù))

    STM32 CubeMX (Freertos任務(wù):創(chuàng)建、刪除、掛起、恢復(fù))

    學(xué)習(xí)使用Freertos第一步 FreeRTOS 任務(wù)管理,您需要掌握以下幾個(gè)關(guān)鍵函數(shù): 1. xTaskCreate() :用于創(chuàng)建一個(gè)任務(wù),需要指定任務(wù)函數(shù)、任務(wù)名稱、任務(wù)棧大小和優(yōu)先級(jí)等參數(shù)。 2. vTaskDelete() :用于刪除一個(gè)任務(wù),可以由任務(wù)自身或其他任務(wù)調(diào)用。 3. vTaskDelay() :用于使當(dāng)前任務(wù)進(jìn)

    2024年02月12日
    瀏覽(27)
  • STM32 CubeMX (第四步Freertos內(nèi)存管理和CPU使用率)

    STM32 CubeMX (第四步Freertos內(nèi)存管理和CPU使用率)

    學(xué)習(xí)使用Freertos第四步 在 FreeRTOS 中,中斷管理和軟件定時(shí): · taskENTER_CRITICAL() ·; 是一個(gè)函數(shù)在 FreeRTOS 中使用的,用于進(jìn)入臨界區(qū)(critical section)。在臨界區(qū)內(nèi),中斷會(huì)被禁用,這樣可以確保在多任務(wù)環(huán)境下共享資源的安全性。你可以在需要保護(hù)共享資源的代碼段中使用 ·

    2024年02月12日
    瀏覽(24)
  • 【STM32】利用CubeMX對(duì)FreeRTOS用按鍵控制任務(wù)

    【STM32】利用CubeMX對(duì)FreeRTOS用按鍵控制任務(wù)

    對(duì)于FreeRTOS中的操作,最常用的就是創(chuàng)建、刪除、暫停和恢復(fù)任務(wù)。 此次實(shí)驗(yàn)?zāi)繕?biāo): 1.創(chuàng)建任務(wù)一:LED1每間隔1秒閃爍一次,并通過串口打印 2.創(chuàng)建任務(wù)二:LED2每間隔0.5秒閃爍一次,并通過串口打印 3.創(chuàng)建任務(wù)三:通過KEY1實(shí)現(xiàn)對(duì)任務(wù)一的創(chuàng)建和刪除。 按鍵按下以后如果有任

    2024年02月13日
    瀏覽(37)
  • STM32 CubeMX (第一步Freertos任務(wù)管理:創(chuàng)建、刪除、掛起、恢復(fù))

    STM32 CubeMX (第一步Freertos任務(wù)管理:創(chuàng)建、刪除、掛起、恢復(fù))

    學(xué)習(xí)使用Freertos第一步 FreeRTOS 任務(wù)管理,您需要掌握以下幾個(gè)關(guān)鍵函數(shù): 1. xTaskCreate() :用于創(chuàng)建一個(gè)任務(wù),需要指定任務(wù)函數(shù)、任務(wù)名稱、任務(wù)棧大小和優(yōu)先級(jí)等參數(shù)。 2. vTaskDelete() :用于刪除一個(gè)任務(wù),可以由任務(wù)自身或其他任務(wù)調(diào)用。 3. vTaskDelay() :用于使當(dāng)前任務(wù)進(jìn)

    2024年02月12日
    瀏覽(32)
  • STM32初學(xué)者入門FreeRTOS操作系統(tǒng),多任務(wù)實(shí)時(shí)系統(tǒng)

    STM32初學(xué)者入門FreeRTOS操作系統(tǒng),多任務(wù)實(shí)時(shí)系統(tǒng)

    ? ? ? ? FreeRTOS(Free Real-Time Operating System)是一個(gè)開源的嵌入式實(shí)時(shí)操作系統(tǒng),它專門設(shè)計(jì)用于在資源有限的嵌入式系統(tǒng)中運(yùn)行。FreeRTOS提供了一些用于任務(wù)管理、調(diào)度、同步和通信的功能,使開發(fā)者能夠輕松地創(chuàng)建可靠的嵌入式系統(tǒng)。 以下是FreeRTOS的一些特點(diǎn)和功能: 輕量

    2024年02月11日
    瀏覽(27)
  • STM32 CubeMX (第二步Freertos任務(wù)通信:隊(duì)列、信號(hào)量、互斥量,事件組,任務(wù)通知)

    STM32 CubeMX (第二步Freertos任務(wù)通信:隊(duì)列、信號(hào)量、互斥量,事件組,任務(wù)通知)

    學(xué)習(xí)使用Freertos第二步 在 FreeRTOS 中,任務(wù)通信可以通過以下函數(shù)來(lái)實(shí)現(xiàn): xQueueCreate() :用于創(chuàng)建一個(gè)消息隊(duì)列。可以設(shè)置隊(duì)列長(zhǎng)度和每個(gè)消息的大小。 xQueueSend() :將一條消息發(fā)送到隊(duì)列中??梢赃x擇阻塞或非阻塞發(fā)送。 xQueueReceive() :從隊(duì)列中接收一條消息??梢赃x擇阻塞

    2024年02月11日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包