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

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

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

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

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

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

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

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

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

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

API函數(shù):

SemaphoreHandle_t xHandler; 創(chuàng)建二進(jìn)制Handler xHandler = xSemaphoreCreateBinary(); 創(chuàng)建一個(gè)二進(jìn)制信號(hào)量 返回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)判斷,會(huì)占用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ī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10771

    瀏覽量

    210430
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    483

    瀏覽量

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

    關(guān)注

    0

    文章

    15

    瀏覽量

    8039

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

    如何實(shí)現(xiàn)二進(jìn)制和BCD碼數(shù)據(jù)的相互轉(zhuǎn)變?

    如何實(shí)現(xiàn)二進(jìn)制和BCD碼數(shù)據(jù)的相互轉(zhuǎn)變? 二進(jìn)制碼是將十進(jìn)制數(shù)字表示為二進(jìn)制數(shù)和十進(jìn)制數(shù)的一種表示方法。在計(jì)算機(jī)系統(tǒng)中,
    的頭像 發(fā)表于 02-18 14:51 ?2857次閱讀

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    二進(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ì)算方法

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

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

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

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

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

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

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