Ⅰ、概述
上一篇文章是講述uC/OS-II Ports下面os_cpu_a.asm、os_cpu_c.c和os_cpu.h文件底層端口代碼的移植(修改)和說明,接著上一篇文章來講述關于UCOS移植應用部分的代碼。
該文主要針對uC/OS-II 上層應用(配置OS、新建任務等)來講述。
請下載“UCOS2_STM32F1_3個簡單任務”作為參考工程。
Ⅱ、下載(請到我博客下載)
筆者將F0、F1、F3、F4移植到最新UCOS2.92上。移植好的、獨立的4個工程供大家下載學習、研究。建立的任務都是一樣的,只是針對芯片內核不同,Ports目錄下相關的源代碼有差異、標準外設庫也存在差異。每一個系列針對不同型號芯片只需要適當改一下“型號”就行了。
提供下載的軟件工程都是在板子上運行,保證沒問題才上傳至360云盤。下載提供下載的軟件工程是在上一篇文章的基礎上增加了os_cfg.h系統配置中文注釋,包含了STM32F0、F1、F3、F4系列獨立的軟件工程。
UCOS2.92_STM32(F0、1、3、4)3個簡單任務(增加os_cfg中文注釋)
360云盤下載地址:
https://yunpan.cn/cBsmgInzX856G訪問密碼 4242
UCOS源代碼工程
官網下載(需要賬號):
https://www.micrium.com/downloadcenter/download-results/?searchterm=hm-stmicroelectronics&supported=true
360云盤下載(定期更新至最新):
https://yunpan.cn/cRzcf8eSacEhE訪問密碼 1235
ST標準外設庫
官網下載(需要賬號):
http://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software.html?querycriteria=productId=SC961
360云盤下載(定期更新至最新):
https://yunpan.cn/cSaCpGejMSfr8訪問密碼 60ae
參考資料:
https://yunpan.cn/cRCdSt73GwT6j訪問密碼 499e
Ⅲ、工程目錄結構說明
文件結構和工程目錄結構對應關系如上圖所示。
第一類(標準外設庫):
Startup Code:啟動代碼
STM32F10x_StdPeriph_Driver:標準外設庫庫驅動
CMSIS:標準接口
第二類(μC/OS-II實時內核):
uC/OS-II Source:內核源代碼(與處理器無關)
uC/OS-II Ports:OS端口底層代碼(與處理器、編譯平臺有關)
第三類(用戶應用):
Bsp:應用底層代碼(初始化、驅動等)
App:應用實現代碼(配置OS、應用等)
該文主要針對第三類APP進行移植描述,包括os_cfg.h、app_cfg.c、app_task.c文件等。
Ⅳ、配置os_cfg.h文件
os_cfg顧名思義,它就是系統配置的意思,它位于工程App目錄結構下面,主要是系統上層配置和應用。
1.各項參數
各項參數里面針對初學者,主要有三個重要的參數,其他參數暫時可以不用深入理解。
三個重要的參數:
#define OS_LOWEST_PRIO 63u
#define OS_MAX_TASKS 10u
#define OS_TICKS_PER_SEC 100u
這三個參數需要重點理解,詳情可參看中文注釋。
對于HOOKS函數是我們上一篇文章講述os_cpu_c.c里面相關的函數,這里OS_CPU_HOOKS_EN會被系統調用,將其定義為使能。
關于OS_DEBUG_EN,我們不使用系統自帶的調試功能,就不使能。
2.任務堆棧大小
這里和我們自己建立的任務堆棧差不多的意思,將會在下面講述app_cfg講解。
3.任務管理
任務管理主要是針對uC/OS-II Source結構下os_task.c文件里面的源代碼,os_task.c文件里面就包含了任務建立、刪除、掛起等關于任務的一些函數接口,我們需要使用那些功能,這里就需要打開。
如創建任務:
#define OS_TASK_CREATE_EN 0u
#define OS_TASK_CREATE_EXT_EN 1u
我們使用擴展方式創建任務,也就是升級版本創建任務的函數。
4.系統其他功能
了解過UOCS系統的人可能知道,UCOS系統有多種功能,也就是可以建立多任務之間通信的功能,每一種功能對應一個源代碼文件。
從上圖可以看得出來,每一種功能夠有使能全局的宏定義,只有使能了全局宏定義才可以使用里面的功能,里面各個模塊(函數接口)也是配置了使用和不使用的的宏定義。
關于UCOS2更多功能,我會在后期整理關于UCOS系統相關的知識,也就是這里所說的其他功能,敬請關注微信等待,后期第一時間在微信發布消息。
Ⅴ、配置app_cfg.h、.c文件
app_cfg.c文件位于工程App目錄結構下面,主要用于系統應用的配置。
1.任務優先級、堆棧
我們建立任務需要對任務優先級和堆棧進行一個定義,它位于app_cfg.h文件下面。
這里任務數和最小優先級數值需要和os_cfg.h文件的宏定義對應才行。
2.系統滴答
我們在前兩篇文章講述過關于系統滴答的,但講的是屏蔽Micrium官網提供的OS_CPU_SysTick配置(位于os_cpu_c.c文件下)。
這里是兼容ST(也是M3內核標準的)的函數接口,所以就不使用Micrium官網提供的OS_CPU_SysTick配置。
3.建立任務
我們建立任務就是在系統里面分配一定的空間,給我們的應用提供一個函數接口(AppTask1、AppTask2、AppTask3)。我們一旦啟動了系統(開始任務),相關的函數就會逐步執行。
Ⅶ、建立任務(app_task.c)
我們使用操作系統的最終目的還是需要執行我們的應用,我們這里簡歷了3個簡單的應用(任務),位于app_task.c源文件下面。
應用比較簡單,就是變化LED,至于OSTimeDly(50)函數,可能初學者不是很理解,其實就是延時50個滴答。
我們在os_cfg.h文件中定義#define OS_TICKS_PER_SEC 100u,也就是每秒100個滴答,OSTimeDly(50)就是延時了0.5秒的意思。
Ⅷ、文件比較工具
對于前面幾篇文章,可能有些人比較關注我們移植的過程中到底修改了那些文件,這里就給大家推薦一下“文件比較工具”,網上有很多相關的工具,可以自己搜索下載。也可以到我360云盤下載:
https://yunpan.cn/cBsYfRw3Iiut3訪問密碼 7155
這里我們拿Beyond Compare為例,給大家看一下效果:
-
移植
+關注
關注
1文章
379瀏覽量
28150 -
STM32F10
+關注
關注
0文章
45瀏覽量
15639 -
ucos2
+關注
關注
0文章
15瀏覽量
3563
發布評論請先 登錄
相關推薦
評論