介紹一下Ucos—iii的優點:相比于Ucos—ii,UCOS-II主要針對8位、16位機以及低端32位機,UCOS-III主要針對高端32位處理器和64位處理器,在性能上有了很大的提升,有了不少的提升,例如任務數沒有顯示,不同的任務可以擁有相同的優先級,相同優先級的任務調度采用時間片輪轉法。對一些內核對象,例如信號量,可以在運行過程中創建和刪除,不用像ucos-ii那樣必須在編譯時分配好。內核對象數也沒有限制。
Ps:不過如果芯片處理能力有限的話,建議還是量力而為,選擇ucos—ii足夠就沒必要選擇ucos—iii,ucos-iii顯然適用于更加復雜的系統應用,本身占用的內存空間也較大,而且代碼顯得比較累贅。例如創建一個任務,就要這樣的麻煩
void OSTaskCreate (OS_TCB *p_tcb,
CPU_CHAR *p_name,
OS_TASK_PTR p_task,
void *p_arg,
OS_PRIO prio,
CPU_STK *p_stk_base,
CPU_STK_SIZE stk_limit,
CPU_STK_SIZE stk_size,
OS_MSG_QTY q_size,
OS_TICK time_quanta,
void *p_ext,
OS_OPT opt,
OS_ERR *p_err);
這么多的參數,如果初學的話,一個個去弄懂也沒必要,但是如果不弄懂又學不會,所以如果入門ucos操作系統的話,本人介意先學ucos—ii,學了ucos—ii在去開ucos—iii,你會發現系統時基,任務創建和調度原理其實是一樣的,只不過部分功能做了優化,通俗點講就是更加嚴謹了,好了,理論只是幫助實際應用的東西,太過于執著于理論就鉆了牛角尖了,本人并非老師,只是一個普通的研發人員,所以以實際產品應用為主,所以就說一下實際應用吧。
首先我們要到網上下載ucos—iii的源碼,官網是:http://micrium.com/打開看到
點擊紅色框部分,就會進入下載界面
然后就可以下載了
咱們下載的是下面這個,
下好以后,打開相關文件夾,將源碼復制到工程目錄下
然后打開keil5工程,在工程目錄里添加源碼,目錄結構如下:
好了,上面只是基礎的準備工作,熟了以后大家可以根據自己喜好去創建工程目錄結構,目前來說先按作者的來就可以了,這些其實是無關緊要的事情,大家目的是為了學習原理并把它應用到實際工作中嘛。
下面我們就開始真正的將這個系統和cpu關聯起來了,相信大家熟悉操作系統的都知道時基這個概念,ucos操作系統同樣需要一個時基,正好我們的stm32芯片都有一個系統滴答計時器,這里我們將它作為ucos操作系統的時基剛好,那么怎么做呢,其實是有兩個方法,
大致原理是一樣的,我們打開startup_stm32f407xx.s文件,看到這里有棧空間申請的代碼
下面有相關函數調用的聲明:
那么這兩個函數是做什么的呢?
一個是任務調度函數,一個是systick中斷服務函數,我們打開os_cpu_a.asm和os_cpu_c.c,可以看到源碼
只要相關名字對應就可以了,我這里是改的startup_stm32f407xx.s啟動文件的相關聯部分,不希望修改ucos—iii源碼,但有的人是不希望修改stm32cubemx生成的源碼,而去修改ucos—iii的相應部分,都可以,只要函數名一致就可。
Ps:stm32cubemx生成代碼的systick定時器為1ms一次中斷,如果需要調節,可以再時鐘配置函數里去修改。