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

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

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

FreeRTOS用二進(jìn)制信號量可以減少判斷語句的資源消耗

工程師鄧生 ? 來源:硬件會 ? 作者:硬件會 ? 2022-09-15 11:43 ? 次閱讀

信號量另一種通常的用法是用于任務(wù)間的同步機(jī)制。

二進(jìn)制信號量,可以想成是一個布爾類型,只有0 和 1。

兩個任務(wù)公用一個信號量,一個任務(wù)用于產(chǎn)生信號量,另一個任務(wù)使用此信號量。

比如:按鍵按下亮燈,再按一次燈滅。按鍵任務(wù)中按鍵按下時,將信號量置1。

亮燈任務(wù)中將信號量置0。 用二進(jìn)制信號量可以減少判斷語句的資源消耗。

API函數(shù):

SemaphoreHandle_t xHandler; 創(chuàng)建二進(jìn)制Handler xHandler = xSemaphoreCreateBinary(); 創(chuàng)建一個二進(jìn)制信號量 返回NULL,或者h(yuǎn)andler xSemaphoreGive(xHandler); 生產(chǎn)者+1 xSemaphoreTake(xHanlder, timeout); 消費(fèi)者-1 返回pdPASS, 或者pdFAIL 示例如下:

938356fc-3120-11ed-ba43-dac502259ad0.png

93ae5e42-3120-11ed-ba43-dac502259ad0.png

93d3d820-3120-11ed-ba43-dac502259ad0.png

93edc762-3120-11ed-ba43-dac502259ad0.png

9409095a-3120-11ed-ba43-dac502259ad0.png

系統(tǒng)判斷,會占用CPU的很大資源,以上示例中判斷按鍵是否按下,可以用中斷處理。在中斷中必須調(diào)用函數(shù)名以FromISR結(jié)尾的函數(shù)。示例如下:

9427d542-3120-11ed-ba43-dac502259ad0.png

9447f6d8-3120-11ed-ba43-dac502259ad0.png

94593308-3120-11ed-ba43-dac502259ad0.png



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10702

    瀏覽量

    209377
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    483

    瀏覽量

    61726
  • API函數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    8034

原文標(biāo)題:FreeRTOS二進(jìn)制信號量

文章出處:【微信號:硬件會,微信公眾號:硬件會】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    二進(jìn)制處理中的一些技巧

    二進(jìn)制和十進(jìn)制的處理中,有時候一些小技巧是很有用的。 1、把十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù) (1)在MATLAB中有一個函數(shù)dec2bin,
    的頭像 發(fā)表于 07-05 11:51 ?353次閱讀

    二進(jìn)制串行計數(shù)器工作原理是什么?

    在數(shù)字電路設(shè)計中,計數(shù)器是一種非常關(guān)鍵的組件,用于測量時間、計數(shù)事件或跟蹤狀態(tài)變化等。其中,二進(jìn)制串行計數(shù)器作為一種常用的計數(shù)器類型,在多種應(yīng)用場景中都發(fā)揮著重要作用。本文將對二進(jìn)制串行計數(shù)器
    的頭像 發(fā)表于 05-28 15:52 ?493次閱讀

    二進(jìn)制與邏輯電平的變化范圍

    二進(jìn)制中的兩個數(shù)字0和1稱為位(bit, 是二進(jìn)制數(shù)字binary digit的縮寫)。在數(shù)字電路中,使用兩個不同的電平表示這兩個位。一般情況下,1 高電平表示,0低電平表示,這種
    的頭像 發(fā)表于 02-04 16:54 ?901次閱讀
    <b class='flag-5'>二進(jìn)制</b>與邏輯電平的變化范圍

    鴻蒙二進(jìn)制數(shù)組創(chuàng)建

    背景 c++層數(shù)據(jù)都是二進(jìn)制,需要轉(zhuǎn)換成arrayBuffer透傳到ets層給業(yè)務(wù)使用,但是鴻蒙的使用下面兩個api創(chuàng)建出來的二進(jìn)制數(shù)組數(shù)據(jù)都是錯誤的。 接口
    的頭像 發(fā)表于 01-31 15:24 ?1123次閱讀

    二進(jìn)制、八進(jìn)制、十六進(jìn)制在現(xiàn)實(shí)當(dāng)中有什么意義?

    ,我們可以從數(shù)字存儲和數(shù)據(jù)傳輸?shù)慕嵌葋砜催@些進(jìn)制的意義。計算機(jī)內(nèi)部使用的是二進(jìn)制,即由0和1組成的數(shù)字系統(tǒng)。這是因?yàn)橛嬎銠C(jī)中的所有數(shù)據(jù)都被轉(zhuǎn)化為二進(jìn)制形式進(jìn)行處理和存儲。人們使用十
    的頭像 發(fā)表于 01-16 11:14 ?1883次閱讀

    10進(jìn)制轉(zhuǎn)換為二進(jìn)制的算法

    進(jìn)制轉(zhuǎn)換為二進(jìn)制是計算機(jī)科學(xué)中非?;A(chǔ)且重要的概念之一。在理解和應(yīng)用計算機(jī)科學(xué)的基礎(chǔ)知識時,掌握這個算法是至關(guān)重要的。 在開始講解十進(jìn)制轉(zhuǎn)換為二進(jìn)制的算法之前,讓我們回顧一下十
    的頭像 發(fā)表于 01-15 10:32 ?1439次閱讀

    10進(jìn)制轉(zhuǎn)換為二進(jìn)制的算法

    二進(jìn)制的算法可以分為兩個步驟:整數(shù)部分轉(zhuǎn)換和小數(shù)部分轉(zhuǎn)換。下面將詳細(xì)介紹這兩個步驟。 首先,我們來討論整數(shù)部分的轉(zhuǎn)換。整數(shù)部分的轉(zhuǎn)換是比較簡單的,我們可以通過不斷地進(jìn)行除2取余的操作來得到
    的頭像 發(fā)表于 01-11 09:14 ?1552次閱讀

    labview二進(jìn)制字符串轉(zhuǎn)數(shù)值

    LabVIEW是一種圖形化編程環(huán)境,用于實(shí)時數(shù)據(jù)采集、信號處理以及自動化控制等領(lǐng)域。它采取了數(shù)據(jù)流編程的思想,用戶可以通過將各種功能模塊進(jìn)行連接,輕松搭建起復(fù)雜的系統(tǒng)。 在LabVIEW中,二進(jìn)制
    的頭像 發(fā)表于 01-05 16:20 ?2118次閱讀

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

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

    二進(jìn)制DAC示例介紹

    電子發(fā)燒友網(wǎng)站提供《二進(jìn)制DAC示例介紹.pdf》資料免費(fèi)下載
    發(fā)表于 11-28 11:23 ?1次下載
    <b class='flag-5'>二進(jìn)制</b>DAC示例介紹

    二進(jìn)制數(shù)據(jù)及取值范圍的計算方法

    本文介紹二進(jìn)制數(shù)據(jù)的相關(guān)知識,如定義、取值范圍計算、轉(zhuǎn)換為十進(jìn)制的方法以及一些常見位數(shù)的二進(jìn)制數(shù)據(jù)的取值范圍等。
    的頭像 發(fā)表于 11-08 15:48 ?1561次閱讀
    <b class='flag-5'>二進(jìn)制</b>數(shù)據(jù)及取值范圍的計算方法

    基于STM32F407的FreeRTOS學(xué)習(xí)筆記(10)

    在介紹二進(jìn)制信號量時曾經(jīng)講過,二進(jìn)制信號量可以代替我們裸機(jī)開發(fā)中的標(biāo)志位來使用。在裸機(jī)開發(fā)中我們使用標(biāo)志位來表示某個事件是否發(fā)生,并且其他程
    的頭像 發(fā)表于 11-08 11:10 ?633次閱讀
    基于STM32F407的<b class='flag-5'>FreeRTOS</b>學(xué)習(xí)筆記(10)

    基于STM32F407的FreeRTOS學(xué)習(xí)筆記(8)

    前面幾期我們介紹過隊列、二進(jìn)制信號量以及計數(shù)信號量。但是在使用二進(jìn)制信號量的時候會有一種優(yōu)先級反轉(zhuǎn)問題的出現(xiàn),簡而言之就是低優(yōu)先級任務(wù)因?yàn)闊o
    的頭像 發(fā)表于 11-08 11:07 ?728次閱讀
    基于STM32F407的<b class='flag-5'>FreeRTOS</b>學(xué)習(xí)筆記(8)

    基于STM32F407的FreeRTOS學(xué)習(xí)筆記(7)

    本期在二進(jìn)制信號量的基礎(chǔ)上介紹計數(shù)信號量
    的頭像 發(fā)表于 11-08 11:04 ?454次閱讀
    基于STM32F407的<b class='flag-5'>FreeRTOS</b>學(xué)習(xí)筆記(7)

    怎么使用ucos的信號量?

    應(yīng)該怎么使用ucos的信號量,在什么情況下使用二進(jìn)制信號量和數(shù)值型信號量
    發(fā)表于 10-07 07:41