熊掌號(hào)網(wǎng)站怎么做百度的網(wǎng)頁地址
一、STM32的內(nèi)核型號(hào)有哪些?
STM32系列是STMicroelectronics(意法半導(dǎo)體)生產(chǎn)的基于ARM Cortex-M內(nèi)核的微控制器產(chǎn)品線。這些產(chǎn)品按照不同的內(nèi)核架構(gòu)和性能特點(diǎn)分為了主流產(chǎn)品、超低功耗產(chǎn)品和高性能產(chǎn)品。
1.1 主流產(chǎn)品
- STM32F0 系列:搭載 ARM Cortex-M0 內(nèi)核。
- STM32F1 系列:搭載 ARM Cortex-M3 內(nèi)核。
- STM32F3 系列:搭載 ARM Cortex-M4 內(nèi)核,帶有FPU和DSP指令。
1.2 超低功耗產(chǎn)品
- STM32L0 系列:搭載 ARM Cortex-M0+ 內(nèi)核。
- STM32L1 系列:搭載 ARM Cortex-M3 內(nèi)核。
- STM32L4 和 STM32L4+ 系列:搭載 ARM Cortex-M4 內(nèi)核。
1.3 高性能產(chǎn)品
- STM32F2 系列:搭載 ARM Cortex-M3 內(nèi)核。
- STM32F4 系列:搭載 ARM Cortex-M4 內(nèi)核。
- STM32F7 系列:搭載 ARM Cortex-M7 內(nèi)核,提供更高的性能和更多的功能。
- STM32H7 系列:搭載 ARM Cortex-M7 內(nèi)核或雙核架構(gòu)(Cortex-M7與Cortex-M4)。
二、STM32主頻是多少,傳感器和單片機(jī)總線類型有哪些?
2.1 主頻
STM32微控制器的主頻由硬件和軟件編程決定。通常,外部晶振的頻率可以通過倍頻器來提高到所需的主頻水平。具體主頻值視系列和型號(hào)而定。
2.2 傳感器和單片機(jī)總線類型
STM32微控制器通常支持多種標(biāo)準(zhǔn)和協(xié)議,包括:
- 單總線
- I2C(IIC)
- SPI
- RS485
- RS232
三、STM32F1和F4的區(qū)別?
特性 | STM32F1系列 | STM32F4系列 |
---|---|---|
內(nèi)核類型 | Cortex-M3 | Cortex-M4 |
主頻 | 最高72MHz | 最高168MHz |
浮點(diǎn)運(yùn)算 | 無浮點(diǎn)運(yùn)算單元(FPU) | 具有浮點(diǎn)運(yùn)算單元(FPU) |
功能性能 | 外設(shè)功能相對(duì)較簡(jiǎn)單 | 外設(shè)更豐富、功能更強(qiáng)大 |
內(nèi)存大小 | 內(nèi)部SRAM最大64KB | 內(nèi)部SRAM通常為192KB(112+64+16) |
四、介紹STM32啟動(dòng)過程?
- 通過Boot引腳設(shè)置初始啟動(dòng)地址:STM32的Boot引腳用于選擇啟動(dòng)模式,這些模式可以是系統(tǒng)內(nèi)存、主閃存內(nèi)存或嵌入式SRAM。
- 初始化棧指針(__initial_sp):微控制器首先初始化棧指針,棧指針的初始值通常位于啟動(dòng)時(shí)代碼的起始部分。
- 指向復(fù)位處理程序(Reset_Handler):微控制器跳轉(zhuǎn)到Reset_Handler,這是一個(gè)啟動(dòng)函數(shù),完成基本的硬件設(shè)置工作。
- 設(shè)置異常和中斷處理程序:如HardFault_Handler,處理硬件失敗異常。
- 設(shè)置系統(tǒng)時(shí)鐘(SystemInit):在Reset_Handler中,調(diào)用SystemInit函數(shù),配置微控制器的系統(tǒng)時(shí)鐘。
- 調(diào)用C庫啟動(dòng)例程(_main 或 main):啟動(dòng)代碼會(huì)調(diào)用C庫的初始化代碼,然后進(jìn)入main函數(shù),這是用戶程序的入口點(diǎn)。
五、介紹一下GPIO?
STM32微控制器的GPIO(通用輸入/輸出)引腳可以配置為不同的工作模式,以便于它們可以用于不同的應(yīng)用。下面是STM32 GPIO的8種基本工作模式的說明:
序號(hào) | 模式名稱 | 描述 |
---|---|---|
1 | GPIO_Mode_AIN | 模擬輸入,用于讀取模擬信號(hào),如傳感器輸出。 |
2 | GPIO_Mode_IN_FLOATING | 浮空輸入,高阻抗?fàn)顟B(tài),不連接上拉或下拉電阻。 |
3 | GPIO_Mode_IPD | 下拉輸入,內(nèi)部連接下拉電阻,無高電平信號(hào)時(shí)輸出低電平。 |
4 | GPIO_Mode_IPU | 上拉輸入,內(nèi)部連接上拉電阻,無低電平信號(hào)時(shí)輸出高電平。 |
5 | GPIO_Mode_Out_OD | 開漏輸出,可輸出低電平,高電平需要外部上拉。 |
6 | GPIO_Mode_Out_PP | 推挽輸出,可以輸出高電平和低電平。 |
7 | GPIO_Mode_AF_OD | 復(fù)用開漏輸出,用于特定的外設(shè)復(fù)用功能,如I2C通訊。 |
8 | GPIO_Mode_AF_PP | 復(fù)用推挽輸出,用于特定的外設(shè)復(fù)用功能,如USART、TIM等。 |
六、UART串行通信方式介紹?
6.1 同步通信
-
I2C (Inter-Integrated Circuit) 半雙工:
- I2C是一種串行通信總線,用于連接微控制器和外部設(shè)備。它使用兩根線(串行數(shù)據(jù)線SDA和串行時(shí)鐘線SCL)進(jìn)行通信。
-
SPI (Serial Peripheral Interface) 全雙工:
- SPI是一種串行通信協(xié)議,用于連接微控制器和外部設(shè)備。它通常使用四根線(MOSI、MISO、SCK、SS)。
6.2 異步通信
-
RS485 半雙工:
- RS485是一種串行通信標(biāo)準(zhǔn),通常用于長距離通信和多點(diǎn)通信。
-
RS232 全雙工:
- RS232是一種常見的串行通信標(biāo)準(zhǔn),也被稱為串口通信。
6.3 波特率
UART協(xié)議中的波特率(Baud Rate)是指數(shù)據(jù)傳輸?shù)乃俾?#xff0c;即每秒鐘傳輸?shù)谋忍財(cái)?shù)(bit/s)。波特率115200表示每秒鐘傳輸115200個(gè)比特。
七、串口如何配置?
7.1 串口時(shí)鐘使能,GPIO時(shí)鐘使能
首先需要使能串口和GPIO的時(shí)鐘,確保它們可以正常工作。這可以通過配置相應(yīng)的時(shí)鐘控制寄存器來實(shí)現(xiàn)。
7.2 串口復(fù)位
在初始化之前,對(duì)串口進(jìn)行復(fù)位操作,以確保其處于初始狀態(tài)。
7.3 GPIO端口模式設(shè)置
配置用于串口通信的GPIO引腳的工作模式。通常,TX引腳設(shè)置為復(fù)用推挽輸出模式,而RX引腳設(shè)置為浮空輸入模式。
7.4 串口參數(shù)初始化
初始化串口的參數(shù),包括波特率、數(shù)據(jù)位、停止位、奇偶校驗(yàn)位和數(shù)據(jù)流控制等。
7.5 開啟中斷并初始化NVIC
如果需要使用中斷來處理串口接收或發(fā)送事件,則需要開啟中斷并初始化相應(yīng)的中斷向量控制器(NVIC)。
7.6 使能串口
啟用串口,使其可以開始工作。這通常涉及設(shè)置相應(yīng)的使能位或控制寄存器。
7.7 編寫中斷處理函數(shù)
如果使用了中斷,需要編寫相應(yīng)的中斷處理函數(shù)來處理串口接收或發(fā)送中斷事件。
九、I2C總線在傳送數(shù)據(jù)過程中共有三種類型信號(hào)?
9.1 開始信號(hào)
在I2C總線通信中,開始信號(hào)表示數(shù)據(jù)傳輸?shù)拈_始。它由SCL(時(shí)鐘線)為高電平時(shí),SDA(數(shù)據(jù)線)由高電平向低電平跳變而產(chǎn)生。
9.2 結(jié)束信號(hào)
結(jié)束信號(hào)表示數(shù)據(jù)傳輸?shù)慕Y(jié)束。它由SCL為高電平時(shí),SDA由低電平向高電平跳變而產(chǎn)生。
9.3 應(yīng)答信號(hào)
在I2C通信中,接收器在接收到8位數(shù)據(jù)后,需要向發(fā)送器發(fā)送應(yīng)答信號(hào),表示已經(jīng)成功接收數(shù)據(jù)。應(yīng)答信號(hào)是一個(gè)特定的低電平脈沖。
十、I2C配置主機(jī)模式端口該怎么配置?
10.1 硬件模式
在硬件模式下,使用了復(fù)用開漏輸出,這意味著輸出引腳既不上拉也不下拉,而是由外部電路控制。這種模式適用于快速模式,即400 Kbit/s的數(shù)據(jù)傳輸速率。
10.2 軟件模擬
在軟件模擬模式下,使用了開漏輸出。這意味著輸出引腳在低電平時(shí)輸出低電平,而在高電平時(shí)不輸出電平,這需要外部上拉電阻。這種模式適用于標(biāo)準(zhǔn)模式,即100 Kbit/s的數(shù)據(jù)傳輸速率。
10.3 硬件配置步驟
- 啟用GPIO時(shí)鐘和I2C時(shí)鐘。
- 配置GPIO引腳為復(fù)用開漏模式。
- 初始化I2C參數(shù),包括通信速度、地址模式和數(shù)據(jù)傳輸方向等。
- 啟用I2C外設(shè)。
十一、什么是I2C仲裁機(jī)制?
I2C總線的仲裁機(jī)制是指在多主機(jī)環(huán)境中,多個(gè)主機(jī)同時(shí)嘗試占用總線進(jìn)行通信時(shí),仲裁機(jī)制用于決定哪個(gè)主機(jī)可以優(yōu)先占用總線。具體實(shí)現(xiàn)方法如下:
- 檢測(cè)總線狀態(tài):每個(gè)主機(jī)在發(fā)送數(shù)據(jù)時(shí),都會(huì)實(shí)時(shí)監(jiān)測(cè)SDA線的狀態(tài)。
- 比較數(shù)據(jù):如果一個(gè)主機(jī)發(fā)送了低電平,而另一個(gè)主機(jī)發(fā)送了高電平,發(fā)送高電平的主機(jī)就會(huì)認(rèn)為總線被占用,從而退出仲裁。
- 勝者占總線:最終,發(fā)送低電平的主機(jī)繼續(xù)占用總線。
十二、SPI需要幾根線?
SPI通信需要以下四根線:
- MOSI (Master Out Slave In):主機(jī)輸出,設(shè)備輸入。
- MISO (Master In Slave Out):主機(jī)輸入,設(shè)備輸出。
- SCK (Serial Clock):串行時(shí)鐘線,由主機(jī)提供。
- SS (Slave Select):從設(shè)備選擇線,通常為低電平有效。
十三、SPI通信的四種模式?
SPI通信的四種模式取決于時(shí)鐘極性(CPOL)和時(shí)鐘相位(CPHA):
- 模式0:CPOL=0,CPHA=0。時(shí)鐘空閑狀態(tài)為低電平,數(shù)據(jù)在時(shí)鐘上升沿采樣。
- 模式1:CPOL=0,CPHA=1。時(shí)鐘空閑狀態(tài)為低電平,數(shù)據(jù)在時(shí)鐘下降沿采樣。
- 模式2:CPOL=1,CPHA=0。時(shí)鐘空閑狀態(tài)為高電平,數(shù)據(jù)在時(shí)鐘下降沿采樣。
- 模式3:CPOL=1,CPHA=1。時(shí)鐘空閑狀態(tài)為高電平,數(shù)據(jù)在時(shí)鐘上升沿采樣。
十四、該如何確定使用哪種模式?
確定SPI通信模式的方法如下:
- 查看設(shè)備手冊(cè):大多數(shù)SPI設(shè)備會(huì)在數(shù)據(jù)手冊(cè)中指定所需的SPI模式。
- 實(shí)驗(yàn)驗(yàn)證:在不確定的情況下,可以通過實(shí)驗(yàn)來驗(yàn)證哪種模式可以成功通信。
十五、描述一下中斷的處理流程?
- 中斷發(fā)生:外部設(shè)備或內(nèi)部事件觸發(fā)中斷請(qǐng)求。
- 中斷響應(yīng):CPU響應(yīng)中斷請(qǐng)求,保存當(dāng)前執(zhí)行上下文(如程序計(jì)數(shù)器和狀態(tài)寄存器)。
- 中斷向量跳轉(zhuǎn):CPU跳轉(zhuǎn)到中斷向量表中對(duì)應(yīng)的中斷服務(wù)程序(ISR)。
- 執(zhí)行ISR:執(zhí)行中斷服務(wù)程序,處理中斷事件。
- 恢復(fù)執(zhí)行:ISR執(zhí)行完成后,恢復(fù)保存的上下文,返回中斷前的執(zhí)行點(diǎn)。
十六、STM32的中斷控制器支持多少個(gè)外部中斷?
STM32的嵌套向量中斷控制器(NVIC)支持最多240個(gè)外部中斷源,不同的STM32型號(hào)支持的中斷數(shù)量可能會(huì)有所不同。
十七、STM32有幾個(gè)時(shí)鐘源?
STM32微控制器通常有以下幾個(gè)時(shí)鐘源:
- 內(nèi)部高速時(shí)鐘(HSI)
- 內(nèi)部低速時(shí)鐘(LSI)
- 外部高速時(shí)鐘(HSE)
- 外部低速時(shí)鐘(LSE)
- PLL(Phase-Locked Loop)時(shí)鐘
十八、RTOS的任務(wù)是怎么寫的?如何切出這個(gè)任務(wù)?
編寫RTOS任務(wù)的步驟
- 定義任務(wù)函數(shù):任務(wù)由函數(shù)實(shí)現(xiàn),通常包括無限循環(huán),在其中周期性地執(zhí)行任務(wù)代碼。
- 創(chuàng)建任務(wù):使用RTOS的API函數(shù)創(chuàng)建任務(wù)。這通常包括指定任務(wù)函數(shù)、任務(wù)優(yōu)先級(jí)、以及可能的任務(wù)堆棧大小。
- 任務(wù)調(diào)度:RTOS的調(diào)度器負(fù)責(zé)管理多個(gè)任務(wù)的執(zhí)行時(shí)間和順序。任務(wù)可以基于優(yōu)先級(jí)或輪詢調(diào)度來進(jìn)行切換。
-
任務(wù)函數(shù)示例
這里是一個(gè)簡(jiǎn)單的RTOS任務(wù)示例,使用FreeRTOS作為示例環(huán)境:
-
#include "FreeRTOS.h" #include "task.h"// 任務(wù)函數(shù) void vTaskFunction(void *pvParameters) {for (;;) {// 任務(wù)實(shí)際執(zhí)行的代碼// 可以包括讀取傳感器數(shù)據(jù)、更新狀態(tài)、發(fā)送消息等// 延時(shí),讓出CPUvTaskDelay(pdMS_TO_TICKS(1000));} }// 創(chuàng)建任務(wù) int main(void) {xTaskCreate(vTaskFunction, // 任務(wù)函數(shù)"Example Task", // 任務(wù)名稱configMINIMAL_STACK_SIZE, // 堆棧大小NULL, // 傳遞給任務(wù)的參數(shù)tskIDLE_PRIORITY + 1, // 任務(wù)優(yōu)先級(jí)NULL // 任務(wù)句柄);// 啟動(dòng)調(diào)度器vTaskStartScheduler();// 如果系統(tǒng)正常運(yùn)行,不應(yīng)該到達(dá)這里for (;;); }
任務(wù)切換機(jī)制
任務(wù)的切換(Context Switching)是RTOS中的核心功能之一。當(dāng)一個(gè)任務(wù)處于等待狀態(tài)(例如等待時(shí)間延遲或等待資源),調(diào)度器會(huì)停止當(dāng)前任務(wù)的執(zhí)行,并保存其上下文(包括CPU寄存器等狀態(tài)),然后加載另一個(gè)就緒任務(wù)的上下文并執(zhí)行該任務(wù)。這種機(jī)制確保系統(tǒng)能夠高效地響應(yīng)實(shí)時(shí)事件。
切換觸發(fā)情況:
- 時(shí)間片輪轉(zhuǎn):在固定時(shí)間片結(jié)束后切換到其他相同優(yōu)先級(jí)的任務(wù)。
- 資源等待:當(dāng)任務(wù)等待系統(tǒng)資源(如信號(hào)量、消息隊(duì)列)時(shí)。
- 任務(wù)優(yōu)先級(jí):更高優(yōu)先級(jí)的任務(wù)就緒時(shí),會(huì)搶占當(dāng)前低優(yōu)先級(jí)任務(wù)的執(zhí)行。
18.1 任務(wù)間切換
- 任務(wù)間切換:UCOS使用任務(wù)調(diào)度器來管理多個(gè)任務(wù),每個(gè)任務(wù)有自己的優(yōu)先級(jí)。當(dāng)系統(tǒng)空閑或者當(dāng)前任務(wù)主動(dòng)放棄CPU執(zhí)行權(quán)時(shí),任務(wù)調(diào)度器會(huì)根據(jù)任務(wù)的優(yōu)先級(jí)決定下一個(gè)要執(zhí)行的任務(wù)。高優(yōu)先級(jí)任務(wù)會(huì)優(yōu)先執(zhí)行,低優(yōu)先級(jí)任務(wù)只有在沒有更高優(yōu)先級(jí)任務(wù)要執(zhí)行時(shí)才能獲得CPU執(zhí)行權(quán)。
- 硬件中斷:當(dāng)硬件中斷發(fā)生時(shí),系統(tǒng)會(huì)保存當(dāng)前任務(wù)相關(guān)的變量(通常是通過將這些變量入棧),然后執(zhí)行中斷服務(wù)程序。中斷服務(wù)程序執(zhí)行完成后,系統(tǒng)會(huì)將之前保存的任務(wù)相關(guān)變量出棧并返回到原來的任務(wù)執(zhí)行點(diǎn)。
- 任務(wù)間切換的觸發(fā):為了確保低優(yōu)先級(jí)任務(wù)有機(jī)會(huì)執(zhí)行,高優(yōu)先級(jí)任務(wù)在一定條件下需要放棄CPU執(zhí)行權(quán),讓任務(wù)調(diào)度器選擇其他任務(wù)執(zhí)行。這可以通過插入等待延時(shí)、阻塞等待事件等方式來實(shí)現(xiàn)。
uCOS的任務(wù)調(diào)度器會(huì)根據(jù)任務(wù)的優(yōu)先級(jí)和任務(wù)間的協(xié)作情況來決定任務(wù)的執(zhí)行順序,從而保證系統(tǒng)的穩(wěn)定性和實(shí)時(shí)性。
十九、uCOS-II中任務(wù)間的通信方式有哪幾種?
在uC/OS-II中,使用信號(hào)量、郵箱和消息隊(duì)列這些事件來實(shí)現(xiàn)任務(wù)間的通信是非常常見的。這些事件可以用于實(shí)現(xiàn)資源共享、任務(wù)同步和消息傳遞等功能。
19.1 信號(hào)量
- 用途:控制共享資源的使用權(quán),標(biāo)志某事件的發(fā)生,使兩個(gè)任務(wù)的行為同步。
- 應(yīng)用實(shí)例:互斥信號(hào)量。初始化為1,用于保護(hù)共享資源,確保只有一個(gè)任務(wù)可以訪問該資源,從而避免沖突。
19.2 郵箱(消息郵箱)
- 概念:郵箱用于在任務(wù)之間傳遞消息,類似于一個(gè)緩沖區(qū),任務(wù)可以將消息放入郵箱中,其他任務(wù)則可以從郵箱中獲取消息。
- 應(yīng)用場(chǎng)景:用于存儲(chǔ)外部事件、串口接收程序中的接收緩沖區(qū)等場(chǎng)景。
19.3 消息隊(duì)列
- 概念:消息隊(duì)列是多個(gè)郵箱的集合,任務(wù)和中斷可以將消息放入隊(duì)列中,任務(wù)可以按照先進(jìn)先出的順序獲取消息。
- 應(yīng)用場(chǎng)景:用于存儲(chǔ)多個(gè)任務(wù)產(chǎn)生的消息,確保消息按照先進(jìn)先出的順序被處理。
這些事件在uC/OS-II中扮演著重要的角色,幫助實(shí)現(xiàn)任務(wù)間的通信和協(xié)作,從而構(gòu)建出復(fù)雜的實(shí)時(shí)系統(tǒng)。通過合理地使用這些事件,可以提高系統(tǒng)的可靠性和實(shí)時(shí)性。
二十、uCOS-II和Linux的差異
μC/OS-II和Linux都適用于嵌入式系統(tǒng),但它們有各自的特點(diǎn)和適用場(chǎng)景。
21.1 μC/OS-II
- 設(shè)計(jì)定位:專為嵌入式系統(tǒng)而設(shè)計(jì),具有執(zhí)行效率高、占用空間小、實(shí)時(shí)性能優(yōu)良和可擴(kuò)展性強(qiáng)等特點(diǎn)。
- 特點(diǎn):最小內(nèi)核可編譯至2KB,適用于資源受限的嵌入式環(huán)境,可以在幾乎所有知名的CPU上進(jìn)行移植。
- 優(yōu)勢(shì):針對(duì)嵌入式系統(tǒng)的需求進(jìn)行了優(yōu)化,運(yùn)行效率更高,占用資源更少。
21.2 Linux
- 適用范圍:廣泛應(yīng)用于服務(wù)器、嵌入式系統(tǒng)以及家用機(jī)等各種場(chǎng)景。
- 特點(diǎn):免費(fèi)、安全、穩(wěn)定,具有開放源代碼的特性,可以靈活定制和修改。
- 優(yōu)勢(shì):在服務(wù)器領(lǐng)域有廣泛的應(yīng)用,如Red Hat Linux等發(fā)行版在服務(wù)器上使用廣泛,具有強(qiáng)大的社區(qū)支持和豐富的生態(tài)系統(tǒng)。
μC/OS-II更適用于對(duì)執(zhí)行效率和資源占用有嚴(yán)格要求的嵌入式系統(tǒng),而Linux則更適用于需要廣泛應(yīng)用、靈活定制以及在服務(wù)器領(lǐng)域有較大市場(chǎng)份額的場(chǎng)景。
差異比較
特點(diǎn) | μC/OS-II | Linux |
---|---|---|
設(shè)計(jì)定位 | 專為嵌入式系統(tǒng)設(shè)計(jì) | 廣泛應(yīng)用于服務(wù)器、嵌入式系統(tǒng)等 |
內(nèi)核大小 | 最小內(nèi)核可編譯至2KB | 內(nèi)核較大,常規(guī)內(nèi)核大小較大 |
運(yùn)行效率 | 執(zhí)行效率高,占用空間小 | 在資源充足的系統(tǒng)上通常具有良好的性能 |
實(shí)時(shí)性能 | 實(shí)時(shí)性能優(yōu)良 | 實(shí)時(shí)性能取決于硬件和內(nèi)核配置 |
可擴(kuò)展性 | 可擴(kuò)展性強(qiáng) | 具有較好的可擴(kuò)展性 |
適用場(chǎng)景 | 資源受限的嵌入式系統(tǒng) | 服務(wù)器、嵌入式系統(tǒng)、家用機(jī)等 |
社區(qū)支持和生態(tài)系統(tǒng) | 社區(qū)支持較小,但有專門的嵌入式社區(qū) | 強(qiáng)大的社區(qū)支持和豐富的生態(tài)系統(tǒng) |
二十一、uCOS-II和uCOS-III與FreeRTOS比較
21.1 uC/OS-II vs. FreeRTOS
- 外延支持:uC/OS-II具有大量外延支持,如FS、USB、GUI、CAN等,而FreeRTOS只支持TCP/IP。
- 商業(yè)應(yīng)用費(fèi)用:在商業(yè)上,FreeRTOS是免費(fèi)應(yīng)用的,而uC/OS-II在商業(yè)上的應(yīng)用是需要付費(fèi)的。
- 任務(wù)間通訊:FreeRTOS只支持隊(duì)列、信號(hào)量、互斥量,而uC/OS-II除此外還支持事件標(biāo)志組、郵箱。
- 任務(wù)管理數(shù)量:理論上講,FreeRTOS可以管理超過64個(gè)任務(wù),而uC/OS-II只能管理64個(gè)。
21.2 uC/OS-II vs. μC/OS-III
- 優(yōu)先級(jí)管理:μC/OS-III允許幾個(gè)任務(wù)使用同一個(gè)優(yōu)先級(jí),并且在同一個(gè)優(yōu)先級(jí)中支持時(shí)間片調(diào)度。
- 動(dòng)態(tài)配置內(nèi)核資源:μC/OS-III允許在程序運(yùn)行中動(dòng)態(tài)配置實(shí)時(shí)操作系統(tǒng)內(nèi)核資源,避免了編譯過程中資源不夠分配的問題。
- 資源復(fù)用:μC/OS-III對(duì)資源復(fù)用做了改進(jìn),不再受限于最大任務(wù)數(shù),而是受限于RAM的可用量。
- 功能增加:μC/OS-III增加了許多功能,包括更多的任務(wù)管理、信號(hào)量、互斥型信號(hào)量、事件標(biāo)志、消息隊(duì)列、定時(shí)器等,這些功能在uC/OS-II中是沒有的。
比較總結(jié)
特點(diǎn) | uC/OS-II | FreeRTOS | μC/OS-III |
---|---|---|---|
外延支持 | 支持大量外延,如FS、USB、GUI、CAN等 | 僅支持TCP/IP | 同樣支持大量外延,如FS、USB、GUI、CAN等 |
商業(yè)應(yīng)用費(fèi)用 | 商業(yè)上需付費(fèi) | 商業(yè)上免費(fèi)應(yīng)用 | 商業(yè)上需付費(fèi) |
任務(wù)間通訊 | 支持隊(duì)列、信號(hào)量、互斥量、事件標(biāo)志組、郵箱 | 僅支持隊(duì)列、信號(hào)量、互斥量 | 支持隊(duì)列、信號(hào)量、互斥量、事件標(biāo)志組、郵箱 |
任務(wù)管理數(shù)量 | 最多管理64個(gè)任務(wù) | 理論上支持超過64個(gè)任務(wù) | 理論上支持超過64個(gè)任務(wù) |
優(yōu)先級(jí)管理 | 任務(wù)優(yōu)先級(jí)不能重復(fù),不支持時(shí)間片調(diào)度 | 支持任務(wù)共享同一優(yōu)先級(jí),支持時(shí)間片調(diào)度 | 支持任務(wù)共享同一優(yōu)先級(jí),支持時(shí)間片調(diào)度 |
動(dòng)態(tài)配置內(nèi)核資源 | 不支持 | 不支持 | 可在程序運(yùn)行中動(dòng)態(tài)配置內(nèi)核資源 |
資源復(fù)用 | 有限于最大任務(wù)數(shù) | 不受限于最大任務(wù)數(shù) | 不再受限于最大任務(wù)數(shù) |
功能增加 | 功能相對(duì)較少 | 功能相對(duì)較少 | 增加了許多功能 |