日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

UCOS2_STM32_任務(wù)間信號(hào)量通信(一)_ 應(yīng)用實(shí)例描述

黃工的嵌入式技術(shù)圈 ? 來(lái)源:黃工的嵌入式技術(shù)圈 ? 2020-03-24 13:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Ⅰ、寫在前面

本文主要講述UCOS2基于STM32硬件平臺(tái)下,兩個(gè)任務(wù)之間利用信號(hào)量進(jìn)行通信實(shí)現(xiàn)的方法,具體實(shí)現(xiàn)原理將在后面文章講述。

本文主要站在應(yīng)用的角度來(lái)分析信號(hào)量通信,與芯片相關(guān)的底層這里不過(guò)多描述。本文雖然是STM32F1的芯片,但也適合其他芯片的學(xué)習(xí)(應(yīng)用層)。

今天提供的工程代碼也適用于STM32其他系列芯片(下載我前面移植好的其他系列工程,替換bsp和app下面相關(guān)文件就行。 當(dāng)然,里面LED、按鍵和串口驅(qū)動(dòng)如果不是對(duì)應(yīng)的引腳,請(qǐng)適當(dāng)改一下)。

與本文相關(guān)的UCOS移植和內(nèi)核的講述可以進(jìn)入我微信公眾號(hào)“歷史消息”查看。

關(guān)于本文的更多詳情請(qǐng)往下看。

Ⅱ、本文要點(diǎn)

1.軟件工程源代碼下載

我將今天所講述內(nèi)容源代碼經(jīng)過(guò)測(cè)試無(wú)誤之后上傳至360云盤方便大家下載參考學(xué)習(xí)。

STM32其他系列也可以下載參考,請(qǐng)看“歷史消息”。

本文源代碼工程下載地址:

https://yunpan.cn/ck5RWT48WcpHj訪問(wèn)密碼 9017

2.工程代碼實(shí)現(xiàn)功能效果

為了方便大家理解上面提供下載的軟件工程源代碼,這里先來(lái)講述一下軟件工程實(shí)現(xiàn)的功能和效果。

提供下載源代碼是由MDK-ARM V5軟件下運(yùn)行,如果你沒(méi)有安裝MDK-ARM軟件可以參考我的另外一篇文章:

MDK-ARM下載、安裝與注冊(cè)

建立3個(gè)任務(wù):

開始(主)任務(wù)AppTaskStart:主要開始初始化底層及相關(guān)代碼;

應(yīng)用任務(wù)APP_Task1:接收信號(hào)量消息;

應(yīng)用任務(wù)APP_Task2:發(fā)送信號(hào)量消息。

信號(hào)量事件EventSem_Key:主要用于任務(wù)1和任務(wù)2之間通信。

任務(wù)1接收到信號(hào)消息一次串口打印一次計(jì)數(shù)值(用于記錄按鍵按下次數(shù));

任務(wù)2按鍵一次,發(fā)送信號(hào)量消息一次(按下?tīng)顟B(tài)時(shí)LED2會(huì)亮);

【實(shí)例類似于同學(xué)2給同學(xué)1發(fā)紅包,同學(xué)2每次發(fā)一元紅包,同學(xué)1每打開紅包一次,顯示(打?。┯囝~增加一元】

Ⅲ、源代碼分析

信號(hào)量作用和原理那些這里就不再過(guò)多用文字描述,我主要結(jié)合源代碼工程來(lái)描述信號(hào)量通信的原理。

1.工程目錄結(jié)構(gòu)

打開下載的源代碼工程可以看見(jiàn)整個(gè)工程結(jié)構(gòu)如下圖所示,為了方便理解,我命名的文件名應(yīng)該算是比較貼合實(shí)際意義。


“bsp_task1”和“bsp_task2”:主要是倆任務(wù)的底層驅(qū)動(dòng)代碼。如:初始化IO、USART等。我專門將其單獨(dú)設(shè)立在獨(dú)自的文件下,主要是方便理解,同樣也是為了規(guī)范代碼工程(建議大家寫代碼命名和文件命名都要按照常規(guī)要求來(lái),方便自己理解)。

“app_task1”和“app_task2”:同樣的道理,這里主要是放置任務(wù)應(yīng)用層的源代碼。如:實(shí)現(xiàn)按鍵檢測(cè)、串口打印數(shù)據(jù)、發(fā)送和接收信號(hào)量消息。

“global_variable”:主要是全局變量。由于信號(hào)量通信是介于兩個(gè)任務(wù)之間的一個(gè)信號(hào)量,因此完全屬于任務(wù)1,也不完全屬于任務(wù)2,是任務(wù)1和任務(wù)2共同的變量。因此歸類為全局變量中。

2.os_cfg系統(tǒng)配置

需要使用信號(hào)量相關(guān)的資源,就需要在“系統(tǒng)配置”中打開“信號(hào)量”功能:

#define OS_SEM_EN 1u

(本文主要就是使用了信號(hào)量“發(fā)送”和“接收”功能,關(guān)于信號(hào)量其他功能暫時(shí)沒(méi)有使用到。)

3.兩任務(wù)底層代碼

任務(wù)底層代碼和我們前面開發(fā)裸機(jī)程序一樣,就是初始化及與芯片底層相關(guān)的代碼。

【注意:LED、按鍵、USART等引腳不對(duì)應(yīng)的就在這里修改】

下面是任務(wù)1和任務(wù)底層初始化代碼(應(yīng)該很熟悉)

4.“開始”任務(wù)

“開始”任務(wù)代碼中包含的信息比較多,大概分為框圖中幾類,具體意思見(jiàn)后面注釋。

【注意:“開始”任務(wù)也是一個(gè)任務(wù),因此它的任務(wù)就是LED1閃爍,以便提示系統(tǒng)在正常運(yùn)行(1秒變化一次)】

5.任務(wù)1應(yīng)用代碼

任務(wù)1應(yīng)用代碼是實(shí)現(xiàn)接收(任務(wù)2發(fā)送的)信號(hào)量。當(dāng)接收到信號(hào)量消息就串口打印數(shù)據(jù),每接收一次信號(hào)量,計(jì)數(shù)值就增加一次。

6.任務(wù)2應(yīng)用代碼

任務(wù)2應(yīng)用代碼是實(shí)現(xiàn)發(fā)送信號(hào)量(給任務(wù)1)。每按鍵一次,就發(fā)送信號(hào)一次。按下按鍵狀態(tài)是LED2處于亮的狀態(tài)(提示按鍵已經(jīng)按下)。

Ⅳ、說(shuō)明

本文是偏向應(yīng)用的代碼,關(guān)于信號(hào)量如何實(shí)現(xiàn),比較底層的描述我會(huì)在后期講述一下。

以上總結(jié)僅供參考,若有不對(duì)之處,敬請(qǐng)諒解。

更多關(guān)于UCOS的文章:

UCOS2_STM32移植詳細(xì)過(guò)程(匯總)

UCOS2系統(tǒng)內(nèi)核講述(五)_初始化TCB詳情

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

    關(guān)注

    2313

    文章

    11196

    瀏覽量

    374782
  • 源代碼
    +關(guān)注

    關(guān)注

    96

    文章

    2953

    瀏覽量

    70722
  • ucos2
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    3716
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何在 i.MX8QM 上將 FlexCAN 與 FreeRTOS 任務(wù)信號(hào)量任務(wù)通知)起使用?

    與 FreeRTOS 任務(wù)信號(hào)量任務(wù)通知)起使用? 這是我的主要程序。 https://pastebin.com/brhxqc1w
    發(fā)表于 04-16 06:31

    什么是嵌入式操作系統(tǒng)?

    定時(shí)器,不用自己配置定時(shí)器; 多任務(wù)通信:提供隊(duì)列(Queue)、信號(hào)量(Semaphore)、事件組(Event Group)等組件,解決任務(wù)間數(shù)據(jù)傳遞和同步問(wèn)題; 示例:ta
    發(fā)表于 12-09 10:33

    分享個(gè)嵌入式開發(fā)學(xué)習(xí)路線

    操作系統(tǒng)(RTOS):學(xué)習(xí)FreeRTOS或RT-Thread,掌握任務(wù)創(chuàng)建與刪除、任務(wù)調(diào)度、信號(hào)量、隊(duì)列、定時(shí)器等核心概念。 物聯(lián)網(wǎng)通信技術(shù):掌握WiFi、Bluetooth、LoR
    發(fā)表于 12-04 11:01

    RTOS 必學(xué)概念:任務(wù)、信號(hào)量、隊(duì)列次搞懂

    如果你剛接觸RTOS(實(shí)時(shí)操作系統(tǒng)),很可能會(huì)有這樣的困惑:“RTOS和裸機(jī)程序到底有什么區(qū)別?”“任務(wù)是線程嗎?為什么要分任務(wù)?”“信號(hào)量和互斥鎖有什么區(qū)別,不都是同步手段嗎?”“隊(duì)列是不是就是
    的頭像 發(fā)表于 11-17 10:53 ?712次閱讀
    RTOS 必學(xué)概念:<b class='flag-5'>任務(wù)</b>、<b class='flag-5'>信號(hào)量</b>、隊(duì)列<b class='flag-5'>一</b>次搞懂

    Linux進(jìn)程通信(IPC)全解析:從管道到?Socket,篇講透

    ,Inter-Process Communication) 。 今天我們就來(lái)系統(tǒng)梳理?Linux?中最常用的?6?種?IPC?方式,從原理到實(shí)例,從流程到適用場(chǎng)景,幫你徹底搞懂進(jìn)程如何?“對(duì)話”。 、管道
    的頭像 發(fā)表于 11-14 21:38 ?1.3w次閱讀
    Linux進(jìn)程<b class='flag-5'>間</b><b class='flag-5'>通信</b>(IPC)全解析:從管道到?Socket,<b class='flag-5'>一</b>篇講透

    求助,關(guān)于RT-Thread 最新版本timer.c rt_timer_check函數(shù)問(wèn)題求解

    ;gt;parameter);之前,是否要開啟系統(tǒng)中斷,V4.1.1版本保持關(guān)閉,v5.1.0版本開啟了中斷: v5.1.0 v4.1.1 我在某個(gè)串口任務(wù)實(shí)現(xiàn)當(dāng)中,使用了信號(hào)量的機(jī)制,在串口接收
    發(fā)表于 09-25 07:00

    分享個(gè)嵌入式學(xué)習(xí)階段規(guī)劃

    FreeRTOS(任務(wù) / 信號(hào)量 / 隊(duì)列)、LVGL(UI 設(shè)計(jì)與移植)附加技能:可選學(xué)微信小程序開發(fā)(實(shí)現(xiàn)設(shè)備 - 小程序聯(lián)動(dòng))、電路原理圖與 PCB 設(shè)計(jì)(全流程實(shí)操,完成簡(jiǎn)單電路制作) (四
    發(fā)表于 09-12 15:11

    中斷發(fā)送信號(hào)量不能釋放等待信號(hào)量的線程是怎么回事?

    uint8_t comm_uart_cmd_buff[MSG_BUFF_LEN]; while (1) { /* 從串口讀取個(gè)字節(jié)的數(shù)據(jù),沒(méi)有讀到則等待接收信號(hào)量 */ if(rt_device_read
    發(fā)表于 09-10 06:28

    為什么無(wú)法接收到信號(hào)量

    只有個(gè)解析線程負(fù)責(zé)接收信號(hào)量,永久等待的。有別的幾個(gè)線程收到數(shù)據(jù)之后會(huì)釋放信號(hào)量,設(shè)備剛開始運(yùn)行是沒(méi)問(wèn)題的,可是運(yùn)行十幾個(gè)小時(shí)之后就無(wú)法接收到信號(hào)量了,有沒(méi)有大佬可以幫忙解決
    發(fā)表于 09-10 06:21

    【RA4L1-SENSOR】05 按鍵實(shí)現(xiàn)RTOS任務(wù)切換

    ; 配置任務(wù)、隊(duì)列和信號(hào)量 開發(fā)板實(shí)體按鍵接在了P000和P001上 在Pins--P0--P000,設(shè)置Symbolic Name為KEY1,模式是輸入模式。P001(KEY2)同理。 現(xiàn)在
    發(fā)表于 06-16 22:38

    STM32數(shù)字示波器源碼+數(shù)字信號(hào)處理教程、配套實(shí)例

    STM32數(shù)字示波器源碼+數(shù)字信號(hào)處理教程、配套實(shí)例 部分截圖:
    發(fā)表于 05-28 21:25

    【每周推薦】基于STM32開發(fā)項(xiàng)目實(shí)例下載(含PCB、原理圖、源碼等)

    1、手機(jī)APP遠(yuǎn)程控制,智能家居監(jiān)測(cè)、智能控制系統(tǒng)(含源碼)手機(jī)APP遠(yuǎn)程控制,智能家居監(jiān)測(cè)、智能控制系統(tǒng)(STM32L4、服務(wù)器、安卓源碼)項(xiàng)目實(shí)例下載!2、基于STM32藍(lán)牙控制小
    的頭像 發(fā)表于 05-27 08:05 ?1526次閱讀
    【每周推薦】基于<b class='flag-5'>STM32</b>開發(fā)項(xiàng)目<b class='flag-5'>實(shí)例</b>下載(含PCB、原理圖、源碼等)

    每周推薦!基于STM32開發(fā)項(xiàng)目實(shí)例下載(含PCB、原理圖、源碼等)

    1、手機(jī)APP遠(yuǎn)程控制,智能家居監(jiān)測(cè)、智能控制系統(tǒng)(含源碼) 手機(jī)APP遠(yuǎn)程控制,智能家居監(jiān)測(cè)、智能控制系統(tǒng)(STM32L4、服務(wù)器、安卓源碼) 項(xiàng)目實(shí)例下載! 2、基于STM32藍(lán)
    發(fā)表于 05-26 14:01

    基于STM32的武警哨位聯(lián)動(dòng)報(bào)警系統(tǒng)設(shè)計(jì),支持以太網(wǎng)和WIFI通信(硬件、源碼、論文等)

    基于STM32的武警哨位聯(lián)動(dòng)報(bào)警系統(tǒng)設(shè)計(jì),支持以太網(wǎng)和WIFI通信(硬件、源碼、論文等) 項(xiàng)目實(shí)例下載! 純分享帖,需要者可點(diǎn)擊附件免費(fèi)獲取完整資料~~~【免責(zé)聲明】本文系網(wǎng)絡(luò)轉(zhuǎn)載,版權(quán)歸原作者所有。本文所用視頻、圖片、文字
    發(fā)表于 05-23 20:51

    請(qǐng)問(wèn)CCyUSBDevice如何同時(shí)實(shí)例2個(gè)?

    CYAPI編程手冊(cè)中的解釋,CCyUSBDevice實(shí)例化后是連接到了cyusb driver驅(qū)動(dòng)上,它能查找實(shí)例中的多臺(tái)USB設(shè)備。現(xiàn)在的問(wèn)題是假如我有2臺(tái)cyusb3014設(shè)備,固件
    發(fā)表于 05-19 07:27
    南靖县| 合作市| 繁昌县| 枣庄市| 台中市| 太原市| 杂多县| 揭阳市| 桃江县| 临漳县| 平阴县| 江城| 句容市| 柯坪县| 霍林郭勒市| 岐山县| 杭锦旗| 恩施市| 阿克苏市| 景德镇市| 合江县| 张掖市| 新乐市| 湘潭市| 理塘县| 衡东县| 上饶市| 罗田县| 罗山县| 哈尔滨市| 西华县| 静安区| 葵青区| 祁阳县| 汪清县| 孝义市| 阳谷县| 临汾市| 沙湾县| 阿拉善盟| 耒阳市|