日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

FreeRTOS 入门

發布時間:2023/12/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FreeRTOS 入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、簡介


在嵌入式領域中,嵌入式實時操作系統正得到越來越廣泛的應用。采用嵌入式實時操作系統(RTOS)可以更合理、更有效地利用CPU的資源,簡化應用軟件的設計,縮短系統開發時間,更好地保證系統的實時性和可靠性。
FreeRTOS是一個迷你的實時操作系統內核。作為一個輕量級的操作系統,功能包括:任務管理、時間管理、信號量、消息隊列、內存管理、記錄功能、軟件定時器、協程等,可基本滿足較小系統的需要。
由于RTOS需占用一定的系統資源(尤其是RAM資源),只有μC/OS-II、embOS、salvo、FreeRTOS等少數實時操作系統能在小RAM單片機上運行。相對μC/OS-II、embOS等商業操作系統,FreeRTOS操作系統是完全免費的操作系統,具有源碼公開、可移植、可裁減、調度策略靈活的特點,可以方便地移植到各種單片機上運行,其最新版本為10.3.1版。

二、原理實現


任務調度機制是嵌入式實時操作系統的一個重要概念,也是其核心技術。對于可剝奪型內核,優先級高的任務一旦就緒就能剝奪優先級較低任務的CPU使用權,提高了系統的實時響應能力。不同于μC/OS-II,FreeRTOS對系統任務的數量沒有限制,既支持優先級調度算法也支持輪換調度算法,因此FreeRTOS采用雙向鏈表而不是采用查任務就緒表的方法來進行任務調度。

三、任務函數


頭文件:task.h
1、任務創建:
portBASE_TYPE xTaskCreate (
?pdTASK_CODE pvTaskCode, 指向任務的實現函數的指針。效果上僅僅是函數名
const portCHAR * const pcNane, 具有描述性的任務名。FreeRTOS 不會使用它。
?unsigned portSHORT usStackDepth, 指定任務堆棧的大小
?void *pvParameters, 指針用于作為一個參數傳向創建的任務?
?unsigned portBASE_TYPE uxPriority, 任務運行時的優先級
?xTaskHandle *pvCreatedTask 用于傳遞任務的句柄,可以引用從而對任務進行其他操作。
)
2、任務刪除:
void vTaskDelete (?
xTaskHandle pxTask 處理要刪除的任務。傳遞 NULL 將刪除自己
)
3、任務延時:
void vTaskDelay (?
?portTickType xTicksToDelay 時間數量,調用任務應該鎖住的時間片周期?
)
4、任務延遲到指定時間:
portTickType *pxPreviousWakeTime, 指定一個變量來掌握任務最后開啟的時間, 第一次使用時必須
使用當前時間來初始化, 在 vTaskDelayUntil 中,這個變量是自
動修改的
portTickType xTimeIncrement 循環周期時間
)
5、獲得任務優先級:
unsigned portBASE_TYPE uxTaskPriorityGet (?
?xTaskHandle pxTask 需要處理的任務. 當傳遞 NULL 時,將返回調用該任務的優先級?
)
6、設置任務優先級:
void vTaskPrioritySet (?
xTaskHandle pxTask , 需要設置優先級的任務。當傳遞 NULL,將設置調用任務的優先級
unsigned portBASE_TYPE uxNewPriority 任務需要設置的優先級?
)
7、掛起任務:
void vTaskSuspend (?
xTaskHandle pxTaskToSuspend 處理需要掛起的任務。傳遞 NULL 將掛起調用此函數的任務?
)?
8、喚醒掛起的任務:
portBase_TYPE vTaskResumeFromISR (?
xTaskHandle pxTaskToResum 就緒任務的句柄
)
9、從中斷喚醒掛起的任務:
portBase_TYPE vTaskResumeFromISR (?
xTaskHandle pxTaskToResum 就緒任務的句柄
)
10、為任務分配標簽值:
void vTaskSetApplicationTaskTag (
?xTaskHandle xTask , 將分配給標簽值的任務。傳遞 NULL 將分配標簽給調用的任務。
pdTASK_HOOK_CODE pxTagValue 分配給任務的標簽值 類型為 pdTASK_HOOK_CODE 允許一
個函數指針賦值給標簽,因此實際上任何值都可以分配
)

四、內核函數


頭文件:task.h
1、啟動實時內核處理:
void vTaskStartScheduler ( void );
2、停止實時內核運行:
void vTaskEndScheduler ( void );
3、掛起所有活動的實時內核,同時允許中斷:
void vTaskSuspendAll ( void );

五、隊列管理


隊列是內部通信的主要形式。它可以用于在任務和任務之間以及任務和中斷之間發送消息。
頭文件:queue.H
1、設置一個新的隊列:
xQueueHandle xQueueCreate (?
?unsigned portBASE_TYPE uxQueueLength, 隊列中包含最大項目數量
?unsigned portBASE_TYPE uxItemSize 隊列中每個項目所需的字節數
?);
?2、傳遞一個項目到隊列:
?portBASE_TYPE xQueueSend (?
?xQueueHandle xQueue, 將項目傳進的隊列
?const void * pvItemToQueue, 項目的指針【源數據】
?portTickType xTicksToWait 等待的最大時間量【時間使用滴答周期】
?);
?3、傳遞項目到一個隊列中的后面:
?portBASE_TYPE xQueueSendToBack (
?xQueueHandle xQueue, 將項目傳進的隊列
?const void * pvItemToQueue, 項目的指針【源數據】
?portTickType xTicksToWait 等待的最大時間量
?);
?4、從隊列接收一個項目:
?portBASE_TYPE xQueueReceive (?
?xQueueHandle xQueue, 發送項目的隊列句柄
?void *pvBuffer, 指向緩沖區的指針,將接收的項目被復制進去
?portTickType xTicksToWait 任務中斷并等待隊列中可用空間的最大時間
?);
?5、從中斷傳遞一個項目到隊列的后面:
?portBASE_TYPE xQueueSendFromISR (?
?xQueueHandle pxQueue, 將項目傳進的隊列
?const void *pvItemToQueue, 項目的指針【源數據】
?portBASE_TYPE *pxHigherPriorityTaskWoken 因空間數據問題被掛起的任務是否解鎖
?);
?6、從中斷傳遞項目到一個隊列中的后面:
? portBASE_TYPE xQueueSendToBackFromISR (?
?xQueueHandle pxQueue,?
?const void *pvItemToQueue,?
?portBASE_TYPE *pxHigherPriorityTaskWoken
?);
?7、從中斷傳遞一個項到隊列的前面:
portBASE_TYPE xQueueSendToFrontFromISR (
?xQueueHandle pxQueue,?
?const void *pvItemToQueue,?
?portBASE_TYPE *pxHigherPriorityTaskWoken
?);
?8、中斷時從隊列接收一個項目:
portBASE_TYPE xQueueReceiveFromISR (?
?xQueueHandle pxQueue, 發送項目的隊列句柄
?void *pvBuffer, 指向緩沖區的指針,將接收的項目被復制進去
?portBASE_TYPE *pxTaskWoken 任務將鎖住,等待隊列中的可用空間
?);
?9、為隊列命名,并加入隊列到登記管理中:
void vQueueAddToRegistry (?
?xQueueHandle xQueue, 將要添加登記的隊列句柄
?signed portCHAR *pcQueueName, 為指定的隊列命名。 僅僅是文本串,方便調試。
?);
?10、從登記管理中移除隊列:
void vQueueUnregisterQueue (?
?xQueueHandle xQueue, 從登記管理處中移出的隊列句柄
?);

總結

以上是生活随笔為你收集整理的FreeRTOS 入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产性―交一乱―色―情人 | 成人欧美一区二区三区在线观看 | 91网站在线观看视频 | 少妇人妻精品一区二区三区 | 九九热在线视频播放 | 羞羞影院体验区 | 国产精品久久国产精品99 | 超碰青娱乐| 欧美99久久精品乱码影视 | 蜜桃臀一区二区三区 | 免费污污视频在线观看 | 国产区欧美区日韩区 | 99久久伊人 | 国产伦精品一区二区免费 | 99黄色| 天天摸天天舔 | 美女扒开内裤让男人捅 | 久草欧美 | 日本在线三级 | 天堂av资源在线观看 | 久久久精品视频在线 | 成人欧美在线视频 | 久久第一页 | 91久精品| 日韩精品一区二区三区在线播放 | 亚洲蜜臀av | 天天摸天天操天天射 | 成人午夜精品福利免费 | 最近中文字幕免费 | 伊人77 | 精品久久久久久久久久久 | 在线不卡中文字幕 | 狠狠狠狠狠 | 妓院一钑片免看黄大片 | 日韩av电影手机在线观看 | 电影《走路上学》免费 | 中文字幕 国产精品 | 男女h网站 | 一卡二卡三卡在线视频 | 国产成人午夜高潮毛片 | 天天干女人 | 免费在线观看污 | 超碰免费av| 高清在线一区 | 国产精品分类 | 色狠狠av老熟女 | 久久久999国产精品 天堂av中文在线 | 天天久久久 | 久久久久无码国产精品一区李宗瑞 | 国产良妇出轨视频在线观看 | 在线观看av国产一区二区 | 国产精品一区二区三区久久久 | 台湾性dvd性色av | 羽月希奶水一区二区三区 | 亚洲av色区一区二区三区 | 国产资源网站 | 91大神在线看 | 久草国产精品 | 激情av中文字幕 | 茄子av在线| 黄色网址你懂的 | 久草免费在线视频观看 | 精品免费一区二区 | 欧美| 国产丝袜第一页 | 秋霞欧美一区二区三区视频免费 | 在线色站 | 成人av在线一区二区 | 椎名由奈在线观看 | 亚洲午夜在线播放 | 波多野结衣在线视频播放 | 黄色三级小视频 | 色综合久久精品亚洲国产 | 超碰成人在线观看 | 天堂中文字幕在线观看 | 337p亚洲精品色噜噜噜 | 亚洲三级理论 | 激情久久久久 | 内射中出日韩无国产剧情 | 五月激情网站 | 亚洲综合久久久 | 午夜在线观看免费视频 | 国产黑丝在线播放 | 国产成人免费观看视频 | 视频在线看| 伊人久久免费视频 | 日本激情电影 | 性生活毛片 | 免费三级黄 | 又大又长粗又爽又黄少妇视频 | 国产欧美精品一区 | 日韩爱爱网站 | 黄色在线观看视频网站 | 伊人性视频| 中文字幕日韩欧美一区二区三区 | 黑白配高清国语在线观看 | 午夜精品久久久久久久第一页按摩 | 日韩一级片在线 | 国产色视频在线 |