在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FreeRTOS信號(hào)量使用教程

CHANBAEK ? 來源:凌云物聯(lián)網(wǎng)實(shí)驗(yàn)室 ? 作者:郭工 ? 2022-12-19 09:22 ? 次閱讀

11.1 信號(hào)量說明

信號(hào)量是操作系統(tǒng)中重要的一部分,信號(hào)量一般用來進(jìn)行資源管理和任務(wù)同步, FreeRTOS中信號(hào)量又分為二值信號(hào)量、 計(jì)數(shù)型信號(hào)量、互斥信號(hào)量和遞歸互斥信號(hào)量。信號(hào)量在實(shí)際應(yīng)用中最廣泛的兩個(gè)用途是:

  • 臨界資源的鎖機(jī)制:用于控制共享資源訪問的場景相當(dāng)于一個(gè)上鎖機(jī)制, 代碼只有獲得了這個(gè)鎖的鑰匙才能夠執(zhí)行。
  • 多個(gè)任務(wù)同步機(jī)制:用于任務(wù)與任務(wù)或中斷與任務(wù)之間的同步。

在編寫中斷服務(wù)函數(shù)的時(shí)候我們都知道一定要快進(jìn)快出,中斷服務(wù)函數(shù)里面不能放太多的代碼,否則的話會(huì)影響的中斷的實(shí)時(shí)性。 裸機(jī)編寫中斷服務(wù)函數(shù)的時(shí)候一般都只是在中斷服務(wù)函數(shù)中打個(gè)標(biāo)記,然后在其他的地方根據(jù)標(biāo)記來做具體的處理過程。在使用 RTOS 系統(tǒng)的時(shí)候我們就可以借助信號(hào)量完成此功能, 當(dāng)中斷發(fā)生的時(shí)候就釋放信號(hào)量,中斷服務(wù)函數(shù)不做具體的處理。具體的處理過程做成一個(gè)任務(wù),這個(gè)任務(wù)會(huì)獲取信號(hào)量,如果獲取到信號(hào)量就說明中斷發(fā)生了,那么就開始完成相應(yīng)的處理,這樣做的好處就是中斷執(zhí)行時(shí)間非常短。 這個(gè)例子就是中斷與任務(wù)之間使用信號(hào)量來完成同步,當(dāng)然了, 任務(wù)與任務(wù)之間也可以使用信號(hào)量來完成同步。

在實(shí)際4G/WiFi等網(wǎng)絡(luò)應(yīng)用中,一般最簡單的方法就是使用一個(gè)任務(wù)去查詢 4G/WiFi 模塊是否有數(shù)據(jù)到來,當(dāng)有數(shù)據(jù)的時(shí)候就處理這個(gè)網(wǎng)絡(luò)數(shù)據(jù)。但這樣使用輪詢的方式是很浪費(fèi)CPU 資源的,而且也阻止了其他任務(wù)的運(yùn)行。一種理想的解決方法應(yīng)該是當(dāng)沒有網(wǎng)絡(luò)數(shù)據(jù)的時(shí)候網(wǎng)絡(luò)任務(wù)就進(jìn)入阻塞態(tài),把 CPU 讓給其他的任務(wù),當(dāng)有數(shù)據(jù)的時(shí)候網(wǎng)絡(luò)任務(wù)才去執(zhí)行。現(xiàn)在使用二值信號(hào)量就可以實(shí)現(xiàn)這樣的功能,任務(wù)通過獲取信號(hào)量來判斷是否有網(wǎng)絡(luò)數(shù)據(jù),沒有的話就進(jìn)入阻塞態(tài),而網(wǎng)絡(luò)中斷服務(wù)函數(shù)通過釋放信號(hào)量來通知任務(wù)以太網(wǎng)外設(shè)接收到了網(wǎng)絡(luò)數(shù)據(jù),網(wǎng)絡(luò)任務(wù)可以去提取處理了。網(wǎng)絡(luò)任務(wù)只是在一直的獲取二值信號(hào)量,它不會(huì)釋放信號(hào)量,而中斷服務(wù)函數(shù)是一直在釋放信號(hào)量,它不會(huì)獲取信號(hào)量。

接下來,我們以二值信號(hào)量為例,講解信號(hào)量實(shí)現(xiàn)任務(wù)同步的大致流程。其實(shí),二值信號(hào)量其實(shí)就是一個(gè)只有一個(gè)隊(duì)列項(xiàng)的隊(duì)列,這個(gè)特殊的隊(duì)列要么是滿的,要么是空的。二值信號(hào)量通常用于互斥訪問或任務(wù)同步,它與互斥信號(hào)量非常類似,但是還是有一些細(xì)微的差別,互斥信號(hào)量擁有優(yōu)先級(jí)繼承機(jī)制,二值信號(hào)量沒有優(yōu)先級(jí)繼承。因此二值信號(hào)另更適合用于同步(任務(wù)與任務(wù)或任務(wù)與中斷的同步),而互斥信號(hào)量適合用于簡單的互斥訪問。

  1. 任務(wù)獲取信號(hào)量有效
    如下圖所示,任務(wù)Task通過調(diào)用 xSemaphoreTake() 函數(shù)獲取信號(hào)量,但此時(shí)二值信號(hào)量無效,所以任務(wù)Task進(jìn)入到阻塞態(tài)。
    圖片
  2. 中斷釋放信號(hào)量
    當(dāng)有數(shù)據(jù)到來產(chǎn)生中斷后,在中斷服務(wù)處理程序中通過調(diào)用 xSemaphoreGiveFromISR() 函數(shù)釋放信號(hào)量,此后二值信號(hào)量有效。
    圖片
  3. 任務(wù)獲取信號(hào)量有效
    由于此時(shí)信號(hào)量已經(jīng)有效了,所以任務(wù) Task 獲取信號(hào)量成功,任務(wù)從阻塞態(tài)解除,開始執(zhí)行相關(guān)的處理過程。
    圖片
  4. 任務(wù)再次進(jìn)入阻塞
    由于任務(wù)一般是一個(gè)大的死循環(huán),所以在任務(wù)做完相關(guān)處理以后就會(huì)再次調(diào)用 xSemaphoreTake() 函數(shù)獲取信號(hào)量,但此時(shí)信號(hào)量已經(jīng)失效,因此任務(wù)將進(jìn)入到狀態(tài)1下阻塞等待信號(hào)量有效。

11.2 信號(hào)量API說明

11.2.1 獲取信號(hào)量

不管是二值信號(hào)量、計(jì)數(shù)型信號(hào)量還是互斥信號(hào)量,它們都使用以下兩個(gè)函數(shù)獲取信號(hào)量。

/*
 參數(shù)
     xSemaphore: 要獲取的信號(hào)量句柄。
??  xBlockTime: 阻塞時(shí)間。??       
返回值:
     pdTRUE: 獲取信號(hào)量成功。
     pdFALSE: 超時(shí),獲取信號(hào)量失敗。
 */
BaseType_t xSemaphoreTake(SemaphoreHandle_t xSemaphore,TickType_t xBlockTime)


/*
說明: 此函數(shù)用于在中斷服務(wù)函數(shù)中獲取信號(hào)量, 此函數(shù)用于獲取二值信號(hào)量和計(jì)數(shù)型信號(hào)量,絕對(duì)不能使用此函數(shù)來獲取互斥信號(hào)量。
參數(shù): xSemaphore: 要獲取的信號(hào)量句柄。
      pxHigherPriorityTaskWoken: 標(biāo)記退出此函數(shù)以后是否進(jìn)行任務(wù)切換,這個(gè)變量的值由這三個(gè)函數(shù)來設(shè)置的,用戶不用進(jìn)行設(shè)置,
              用戶只需要提供一個(gè)變量來保存這個(gè)值就行了。當(dāng)此值為 pdTRUE 的時(shí)候在退出中斷服務(wù)函數(shù)之前一定要進(jìn)行一次任務(wù)切換。
回值: pdPASS: 獲取信號(hào)量成功。
      pdFALSE: 獲取信號(hào)量失敗。   
 */      
BaseType_t xSemaphoreTakeFromISR(SemaphoreHandle_t xSemaphore,BaseType_t * pxHigherPriorityTaskWoken)

11.2.2 釋放信號(hào)量

釋放信號(hào)量分為任務(wù)級(jí)和中斷級(jí)。不管是二值信號(hào)量、計(jì)數(shù)型信號(hào)量還是互斥信號(hào)量,它們都使用以下兩個(gè)函數(shù)釋放信號(hào)量。

/*    
  參數(shù):xSemaphore: 要釋放的信號(hào)量句柄。
返回值:
       pdPASS: 釋放信號(hào)量成功; 
       errQUEUE_FULL: 釋放信號(hào)量失敗。
 */  
BaseType_t xSemaphoreGive( xSemaphore )


/*    
說明: 此函數(shù)用于在中斷中釋放信號(hào)量, 此函數(shù)只能用來釋放二值信號(hào)量和計(jì)數(shù)型信號(hào)量,絕對(duì)不能用來在中斷服務(wù)函數(shù)中釋放互斥信號(hào)量。
參數(shù): xSemaphore: 要釋放的信號(hào)量句柄。
      pxHigherPriorityTaskWoken: 標(biāo)記退出此函數(shù)以后是否進(jìn)行任務(wù)切換,這個(gè)變量的值由這三個(gè)函數(shù)來設(shè)置的,用戶不用進(jìn)行設(shè)置,
               用戶只需要提供一個(gè)變量來保存這個(gè)值就行了。當(dāng)此值為 pdTRUE 的時(shí)候在退出中斷服務(wù)函數(shù)之前一定要進(jìn)行一次任務(wù)切換。
返回值:
      pdPASS: 釋放信號(hào)量成功。
      errQUEUE_FULL: 釋放信號(hào)量失敗。
*/      
BaseType_t xSemaphoreTakeFromISR(SemaphoreHandle_t xSemaphore,BaseType_t * pxHigherPriorityTaskWoken)

11.2.3 創(chuàng)建二值信號(hào)量

在FreeRTOS中,有兩個(gè)函數(shù)可以創(chuàng)建二值信號(hào)量:

/*
說明:  使用此函數(shù)創(chuàng)建二值信號(hào)量的話信號(hào)量所需要的 RAM 是由 FreeRTOS 的內(nèi)存管理部分來動(dòng)態(tài)分配的。
返回值:
      NULL: 二值信號(hào)量創(chuàng)建失敗。
      其他值: 創(chuàng)建成功的二值信號(hào)量的句柄。
 */
SemaphoreHandle_t xSemaphoreCreateBinary( void )


/*
說明:  此函數(shù)也是創(chuàng)建二值信號(hào)量的,只不過使用此函數(shù)創(chuàng)建二值信號(hào)量的話信號(hào)量所需要的RAM需要由用戶來分配
參數(shù):  pxSemaphoreBuffer: 此參數(shù)指向一個(gè) StaticSemaphore_t 類型的變量,用來保存信號(hào)量結(jié)構(gòu)體。
返回值:
      NULL: 二值信號(hào)量創(chuàng)建失敗。
      其他值: 創(chuàng)建成功的二值信號(hào)量句柄。
 */
SemaphoreHandle_t xSemaphoreCreateBinaryStatic( StaticSemaphore_t *pxSemaphoreBuffer )

11.2.4 創(chuàng)建互斥信號(hào)量

在FreeRTOS中,有兩個(gè)函數(shù)可以創(chuàng)建互斥信號(hào)量:

/*
說明:此函數(shù)用于創(chuàng)建一個(gè)互斥信號(hào)量,所需要的內(nèi)存通過動(dòng)態(tài)內(nèi)存管理方法分配。
參數(shù):無
返回值:
     NULL: 互斥信號(hào)量創(chuàng)建失敗。
     其他值: 創(chuàng)建成功的互斥信號(hào)量的句柄。
 */
SemaphoreHandle_t xSemaphoreCreateMutex( void )


/*
說明: 此函數(shù)也是創(chuàng)建互斥信號(hào)量的,只不過使用此函數(shù)創(chuàng)建互斥信號(hào)量的話信號(hào)量所需要的RAM 需要由用戶來分配
參數(shù): pxMutexBuffer: 此參數(shù)指向一個(gè) StaticSemaphore_t 類型的變量,用來保存信號(hào)量結(jié)構(gòu)體。
返回值:
      NULL: 互斥信號(hào)量創(chuàng)建失敗。
      其他值: 創(chuàng)建成功的互斥信號(hào)量的句柄。
 */
SemaphoreHandle_t xSemaphoreCreateMutexStatic( StaticSemaphore_t *pxMutexBuffer )

11.2.5 創(chuàng)建計(jì)數(shù)信號(hào)量

在FreeRTOS中,有兩個(gè)函數(shù)可以創(chuàng)建計(jì)數(shù)信號(hào)量:

/*
說明: 此函數(shù)用于創(chuàng)建一個(gè)計(jì)數(shù)型信號(hào)量,所需要的內(nèi)存通過動(dòng)態(tài)內(nèi)存管理方法分配。
參數(shù):  
      uxMaxCount: 計(jì)數(shù)信號(hào)量最大計(jì)數(shù)值,當(dāng)信號(hào)量值等于此值的時(shí)候釋放信號(hào)量就會(huì)失敗。
      uxInitialCount: 計(jì)數(shù)信號(hào)量初始值。
返回值:
      NULL: 計(jì)數(shù)型信號(hào)量創(chuàng)建失敗。
      其他值: 計(jì)數(shù)型信號(hào)量創(chuàng)建成功,返回計(jì)數(shù)型信號(hào)量句柄。
 */
SemaphoreHandle_t xSemaphoreCreateCounting(UBaseType_t uxMaxCount,UBaseType_t uxInitialCount )


/*
說明: 此函數(shù)也是用來創(chuàng)建計(jì)數(shù)型信號(hào)量的,使用此函數(shù)創(chuàng)建計(jì)數(shù)型信號(hào)量的時(shí)候所需要的內(nèi)存需要由用戶分配。
參數(shù): 
      uxMaxCount: 計(jì)數(shù)信號(hào)量最大計(jì)數(shù)值,當(dāng)信號(hào)量值等于此值的時(shí)候釋放信號(hào)量就會(huì)失敗。
      uxInitialCount: 計(jì)數(shù)信號(hào)量初始值。
      pxSemaphoreBuffer: 指向一個(gè) StaticSemaphore_t 類型的變量,用來保存信號(hào)量結(jié)構(gòu)體。
返回值:
      NULL: 計(jì)數(shù)型信號(hào)量創(chuàng)建失敗。
      其他值: 計(jì)數(shù)型號(hào)量創(chuàng)建成功,返回計(jì)數(shù)型信號(hào)量句柄。
 */
SemaphoreHandle_t xSemaphoreCreateCountingStatic( UBaseType_t uxMaxCount,UBaseType_t uxInitialCount,StaticSemaphore_t * pxSemaphoreBuffer )

11.2.6 遞歸互斥信號(hào)量

遞歸互斥信號(hào)量可以看是一種特殊的互斥信號(hào)量,已經(jīng)獲取了信號(hào)量的任務(wù)就不能再次獲取這個(gè)互斥量,但是遞歸互斥信號(hào)量不同,已經(jīng)獲取了遞歸互斥信號(hào)量的任務(wù)可以再次獲取這個(gè)遞歸互斥信號(hào)量,次數(shù)不限。也就是在同一個(gè)任務(wù)中可以無限次獲取遞歸互斥信號(hào)量,中途不需要釋放,而互斥信號(hào)量獲取一次后就失效,需要再次釋放才有效。注意:任務(wù)獲取多少次遞歸互斥信號(hào)量,就要釋放多少次遞歸信號(hào)量。

/*
說明:  動(dòng)態(tài)創(chuàng)建遞歸互斥信號(hào)量
參數(shù):  無
返回值:創(chuàng)建失敗NULL,創(chuàng)建成功返回信號(hào)量句柄。
*/
SemaphoreHandle_t xSemaphoreCreateRecursiveMutex( void )
#define xSemaphoreCreateRecursiveMutex()            xQueueCreateMutex( queueQUEUE_TYPE_RECURSIVE_MUTEX )


/*
說明:  靜態(tài)創(chuàng)建遞歸互斥信號(hào)量
參數(shù):  pxMutexBuffer:指向StaticSemaphore_t類型的變量,用來保存信號(hào)量結(jié)構(gòu)體。
返回值: 創(chuàng)建失敗NULL,創(chuàng)建成功返回信號(hào)量句柄。
*/    
SemaphoreHandle_t xSemaphoreCreateRecursiveMutexStatic( StaticSemaphore_t *pxMutexBuffer )
#define xSemaphoreCreateRecursiveMutexStatic( pxStaticSemaphore )          xQueueCreateMutexStatic( queueQUEUE_TYPE_RECURSIVE_MUTEX, pxStaticSemaphore )


/*
說明:  釋放遞歸互斥信號(hào)量
參數(shù):  xMutex:  信號(hào)量句柄
返回值:
       pdPASS:  釋放信號(hào)量成功
       pdFAIL:  釋放信號(hào)量失敗
*/
xSemaphoreGiveRecursive( SemaphoreHandle_t xMutex )
#define xSemaphoreGiveRecursive( xMutex )    xQueueGiveMutexRecursive( ( xMutex ) )


/*
說明:獲取遞歸互斥信號(hào)量
參數(shù):
     xMutex:    信號(hào)量句柄
     xBlockTime:阻塞時(shí)間
返回值:
     pdPASS:    獲取信號(hào)量成功
     pdFAIL:    獲取信號(hào)量失敗
*/
xSemaphoreTakeRecursive( SemaphoreHandle_t xMutex, TickType_t xBlockTime );
#define xSemaphoreTakeRecursive( xMutex, xBlockTime )    
        xQueueTakeMutexRecursive( ( xMutex ), ( xBlockTime ) )

11.3 信號(hào)量多任務(wù)同步實(shí)例

在這里我們將創(chuàng)建兩個(gè)Led線程,其中藍(lán)色Led線程每隔200ms閃爍一次,而紅色Led線程則每隔1200ms閃爍一次。然后我們使用二值信號(hào)量的機(jī)制,讓兩個(gè)Led線程同步交替閃爍一次。

11.3.1 創(chuàng)建兩個(gè)線程任務(wù)

如下圖所示,單擊窗格頂部的 “New Thread 按鈕,添加兩個(gè)線程分別命名為 thread_led1 和 thread_led2 ,其它的保持默認(rèn)配置即可,并重新生成代碼。

圖片

如下圖所示,單擊窗口的 “New Object” 按鈕,選擇 “Binary Semaphore” 添加一個(gè)二值信號(hào)量,然后修改該信號(hào)量的名稱為 g_led_semaphore ,并重新生成代碼。

圖片

11.3.2 修改信號(hào)量實(shí)例代碼

修改 thread_led1_entry.c 源碼如下:

#include "thread_led1.h"

/* Led Thread entry function */
/* pvParameters contains TaskHandle_t */
void thread_led1_entry(void *pvParameters)
{
    FSP_PARAMETER_NOT_USED (pvParameters);

    R_BSP_PinAccessEnable(); /* Enable access to the PFS registers. */

    /* TODO: add your own code here */
    while (1)
    {
        xSemaphoreTake( g_led_semaphore, portMAX_DELAY );

        R_BSP_PinWrite(LedRed, BSP_IO_LEVEL_HIGH);
        vTaskDelay (600);
        R_BSP_PinWrite(LedRed, BSP_IO_LEVEL_LOW);
        vTaskDelay (600);
    }
}
  • 如果不加信號(hào)量操作部分代碼,紅色Led將每隔1200ms閃爍一次;
  • 這里調(diào)用了xSemaphoreTake() 函數(shù)來獲取信號(hào)量 g_led_semaphore,如果 thread_led2 線程沒有運(yùn)行并釋放信號(hào)量的話,它將會(huì)阻塞;
  • xSemaphoreTake() 函數(shù)在獲取到信號(hào)之后,將會(huì)讓紅色Led閃爍一次;
  • 之后該線程將會(huì)再次調(diào)用了xSemaphoreTake() 函數(shù),等待 thread_led2 線程釋放信號(hào);

修改 thread_led2_entry.c 源碼如下:

#include "thread_led2.h"

/* Led Thread entry function */
/* pvParameters contains TaskHandle_t */
void thread_led2_entry(void *pvParameters)
{
    FSP_PARAMETER_NOT_USED (pvParameters);

    R_BSP_PinAccessEnable(); /* Enable access to the PFS registers. */

    /* TODO: add your own code here */
    while (1)
    {
        if( pdTRUE == xSemaphoreGive( g_led_semaphore) )
        {
            R_BSP_PinWrite(LedBlue, BSP_IO_LEVEL_HIGH);
            vTaskDelay (100);
            R_BSP_PinWrite(LedBlue, BSP_IO_LEVEL_LOW);
            vTaskDelay (100);
        }
    }
}
  • 如果不加信號(hào)量操作部分代碼,藍(lán)色Led將每隔200ms閃爍一次;
  • 這里調(diào)用了xSemaphoreGive() 函數(shù)釋放信號(hào)量 g_led_semaphore,用來同步通知 thread_led1 線程運(yùn)行;
  • xSemaphoreGive() 函數(shù)在釋放信號(hào)之后,如果 thread_led1 沒有來得及獲取信號(hào)量的話,則會(huì)返回pdFALSE;
  • 這樣,如果 thread_led1 沒有運(yùn)行的話,藍(lán)色Led也不會(huì)閃爍了,從而實(shí)現(xiàn)了兩個(gè)線程中的Led同步交替閃爍一次效果了;
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6899

    瀏覽量

    123804
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    484

    瀏覽量

    62414
  • 信號(hào)量
    +關(guān)注

    關(guān)注

    0

    文章

    53

    瀏覽量

    8378
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    實(shí)時(shí)操作系統(tǒng)FreeRTOS信號(hào)量應(yīng)用

    二值信號(hào)量通常用于互斥訪問或同步,二值信號(hào)量和互斥信號(hào)量非常相似,但還是有細(xì)微差別,互斥信號(hào)量擁有優(yōu)先級(jí)繼承機(jī)制,二值信號(hào)沒有。因此二值信
    的頭像 發(fā)表于 06-08 09:24 ?3771次閱讀
    實(shí)時(shí)操作系統(tǒng)<b class='flag-5'>FreeRTOS</b><b class='flag-5'>信號(hào)量</b>應(yīng)用

    FreeRTOS信號(hào)量的使用與實(shí)例

    在嵌入式系統(tǒng)中,任務(wù)管理是一個(gè)重要的部分,它涉及到任務(wù)之間的通信和同步,信號(hào)量,隊(duì)列,互斥鎖和事件標(biāo)志組等概念。本文將以 FreeRTOS 為例,詳細(xì)講解這些內(nèi)容。
    的頭像 發(fā)表于 12-12 15:25 ?2809次閱讀

    轉(zhuǎn):freeRTOS信號(hào)量學(xué)習(xí)

    信號(hào)量同樣是RTOS學(xué)習(xí)中很重要的一節(jié),信號(hào)量可以用在共享資源或者同步任務(wù)中,對(duì)執(zhí)行權(quán)的控制,誰擁有信號(hào)量誰擁有執(zhí)行權(quán),在freeRTOS信號(hào)量
    發(fā)表于 08-12 18:29

    【NUCLEO-F412ZG試用體驗(yàn)】FreeRTOS_信號(hào)量實(shí)現(xiàn)任務(wù)和中斷的同步

    上一期是用事件標(biāo)志組實(shí)現(xiàn)的任務(wù)和中斷同步,使用信號(hào)量一樣可以實(shí)現(xiàn)任務(wù)之間以及任務(wù)和中斷的同步。首先說明,本例程參考了官方例程。實(shí)驗(yàn)現(xiàn)象:1、3個(gè)LED閃爍。2、按鍵按下,發(fā)送相關(guān)信息。步驟:1、使能信號(hào)量。2、編寫測試代碼。新建信號(hào)量
    發(fā)表于 01-03 19:24

    FreeRTOS信號(hào)量不能刪除的原因?

    定義了兩個(gè)任務(wù),第一個(gè)任務(wù)是使用串口收到Task字符則刪除信號(hào)量,但是經(jīng)過測試,并不能刪除,發(fā)送兩次Task字符之后,程序回來死在信號(hào)量刪除部分,求解答為什么?
    發(fā)表于 07-27 08:00

    【轉(zhuǎn)載】AT32 FreeRTOS應(yīng)用筆記

    ..................................................52FreeRTOS 信號(hào)量 ......................................59什么是信號(hào)量
    發(fā)表于 08-16 11:56

    FreeRTOS信號(hào)量介紹

    FreeRTOS信號(hào)量 & ESP32實(shí)戰(zhàn)閱讀建議:有一定操作系統(tǒng)基礎(chǔ)知識(shí)。FreeRTOS信號(hào)量1. 二值信號(hào)量??二值
    發(fā)表于 01-27 07:28

    FreeRTOS信號(hào)量的相關(guān)資料推薦

    一、互斥信號(hào)量簡介互斥信號(hào)量其實(shí)就是一個(gè)擁有優(yōu)先級(jí)繼承的二值信號(hào)量,在同步的應(yīng)用中(任務(wù)與任務(wù)或中斷與任務(wù)之間的同步)二值信號(hào)量最適合。互斥信號(hào)量
    發(fā)表于 02-28 13:39

    McuXpresso的靜態(tài)庫和IRQ處理程序問題求解

    我想制作一個(gè)靜態(tài)庫來處理一些 IRQ 和使用 FreeRTOS 信號(hào)量來處理具體處理的主程序。有些事情逃避了我,我不明白如何正確地做到這一點(diǎn)。我試圖制作一個(gè)靜態(tài)庫,但它有他的 SDK 和外圍設(shè)備定義。不調(diào)用 IRQ Handler 和 lib 中的初始化。解決此問題的最佳
    發(fā)表于 03-22 08:18

    FreeRTOS信號(hào)量 & ESP32實(shí)戰(zhàn)

    FreeRTOS信號(hào)量 & ESP32實(shí)戰(zhàn)閱讀建議:有一定操作系統(tǒng)基礎(chǔ)知識(shí)。FreeRTOS信號(hào)量1. 二值信號(hào)量??二值
    發(fā)表于 12-03 18:06 ?1次下載
    <b class='flag-5'>FreeRTOS</b><b class='flag-5'>信號(hào)量</b> & ESP32實(shí)戰(zhàn)

    FreeRTOS高級(jí)篇6---FreeRTOS信號(hào)量分析

    FreeRTOS信號(hào)量包括二進(jìn)制信號(hào)量、計(jì)數(shù)信號(hào)量、互斥信號(hào)量(以后簡稱互斥)和遞歸互斥
    發(fā)表于 01-26 17:39 ?7次下載
    <b class='flag-5'>FreeRTOS</b>高級(jí)篇6---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>信號(hào)量</b>分析

    FreeRTOS系列第20篇---FreeRTOS信號(hào)量API函數(shù)

    FreeRTOS信號(hào)量包括二進(jìn)制信號(hào)量、計(jì)數(shù)信號(hào)量、互斥信號(hào)量(以后簡稱互斥)和遞歸互斥
    發(fā)表于 01-26 17:44 ?4次下載
    <b class='flag-5'>FreeRTOS</b>系列第20篇---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>信號(hào)量</b>API函數(shù)

    在Arduino IDE中使用FreeRTOS信號(hào)量

    電子發(fā)燒友網(wǎng)站提供《在Arduino IDE中使用FreeRTOS信號(hào)量.zip》資料免費(fèi)下載
    發(fā)表于 01-04 10:18 ?0次下載
    在Arduino IDE中使用<b class='flag-5'>FreeRTOS</b><b class='flag-5'>信號(hào)量</b>

    FreeRTOS的二值信號(hào)量

    FreeRTOS中的信號(hào)量是一種任務(wù)間通信的方式,信號(hào)量包括:二值信號(hào)量、互斥信號(hào)量、計(jì)數(shù)信號(hào)量
    的頭像 發(fā)表于 02-10 15:07 ?1559次閱讀

    FreeRTOS信號(hào)量介紹

    1、信號(hào)量用于控制對(duì)共享資源的訪問 舉一個(gè)很常見的例子,某個(gè)停車場有100個(gè)停車位,這 100 個(gè)停車位大家都可以用,對(duì)于大家來說這 100 個(gè)停車位就是共享資源。假設(shè)現(xiàn)在這個(gè)停車場正常運(yùn)行,你要把
    的頭像 發(fā)表于 07-06 17:09 ?679次閱讀
    主站蜘蛛池模板: 亚州人成网在线播放 | 人人爽人人爱 | 99久久精品免费精品国产 | 一级特黄a免费大片 | 亚洲成人aaa | 一区二区午夜 | 天天操天天干天天插 | 成人综合网址 | 国产亚洲一区二区三区啪 | 亚洲www在线 | 激情文学综合 | 中文字幕亚洲一区二区va在线 | 天天摸天天澡天天碰天天弄 | 中文天堂在线观看 | 国产乱淫a∨片免费视频 | 色屋网| 天天夜夜操 | 一区二区三区在线观看免费 | 免费啪啪网 | 四虎影院在线免费 | 久久精品男人的天堂 | 午夜湿影院 | 免费精品美女久久久久久久久久 | 国产精品无码永久免费888 | 深爱激情五月婷婷 | 国产午夜免费视频片夜色 | 人人做人人爽人人爱 | 特级全毛片 | 不良视频在线观看 | 美女网站黄在线看 | 中文网丁香综合网 | 性中国videosex国产孕妇 | 深夜一级毛片 | 一级待一黄aaa大片在线还看 | 六月丁香深爱六月综合激情 | 亚洲免费视频一区 | 男子扒开美女尿口做羞羞的事 | 天天色天天操天天 | 视频h在线 | 国产日日操 | 在线精品一区二区三区 |