<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > uCOS-II在STM32上的移植步驟

uCOS-II在STM32上的移植步驟

作者: 時(shí)間:2016-11-24 來(lái)源:網(wǎng)絡(luò ) 收藏
前言:
說(shuō)點(diǎn)廢話(huà),網(wǎng)上有很多關(guān)于uCOS-ii移植的文章,好多都是千篇一律,理論性很強,分析了一大堆虛頭巴腦的東西,真想問(wèn)他們,你確定你分析的這些東西是需要你做的工作嗎?實(shí)操性嚴重欠缺。。。這方面我也走了很多彎路,下面就將自己的移植過(guò)程一步步的記錄下來(lái),也給大家做做參考。
首先,簡(jiǎn)單總結一下移植的大概過(guò)程:
(1) 去uC/OS-ii官網(wǎng)下載你要移植芯片CPU的相關(guān)案例,不一定完全對應,那就找相應系列吧。
(2) 編程環(huán)境一般有兩種,分別是IAR和MDK,這個(gè)根據你自己的編程環(huán)境進(jìn)行下載。
(3) 本案例需要將uC/OS-II 移植到STM32F103ZET6上,而我使用的編程環(huán)境是MDK,很遺憾,官網(wǎng)上提供的案例是基于IAR的,所以要基于IAR的案例進(jìn)行更改。
(4) 使用MDK創(chuàng )建一個(gè)無(wú)操作系統的最簡(jiǎn)單程序,確保這個(gè)程序能夠使用,這樣做的目的是為了一步步的排查錯誤,假如無(wú)操作系統時(shí),都有錯誤,移植過(guò)程中也肯定會(huì )有編譯錯誤,那么在排查錯誤的時(shí)候也就增加了難度,不會(huì )寫(xiě)物操作系統的簡(jiǎn)單程序怎么辦。。。那就不要往下看了。
(5) 移植的最大的改動(dòng)主要有兩部分,一個(gè)是一些頭文件的增減,另外一個(gè)就是向量表中PendSV_Handler和SysTick_Handler的修改。這里我要吐槽一下,網(wǎng)上說(shuō)了一大堆關(guān)于什么OS_CPU.H的更改還有各種函數的的分析,這都是扯淡。。。這些根本就不用移植者去修改,官網(wǎng)提供的案例都已經(jīng)提供了,除非你選擇移植的CPU是比較偏的,那么這些東西需要移植者自己去編寫(xiě)。
好了,下面就開(kāi)始詳細的記錄怎么去移植。
一、 創(chuàng )建一個(gè)無(wú)操作系統的簡(jiǎn)單裸板系統
1. 創(chuàng )建源文件工程文件夾,如下圖所示:

其中文件夾“CMSIS”為內核的接口,包含的文件如下圖

文件夾STM32_StdPeriph為固件驅動(dòng)文件夾,這個(gè)把STM32的固件全都添加進(jìn)去即可。
文件夾User為其他文件,如下圖所示:

文件夾Output和List主要是放那些編譯產(chǎn)生的亂七八糟的文件,為了使工程代碼更加簡(jiǎn)潔。
2.使用MDK創(chuàng )建無(wú)操作系統工程項目,這一點(diǎn)就不一一說(shuō)了,將創(chuàng )建后的工程項目文件樹(shù)截圖如下:

這個(gè)時(shí)候還沒(méi)有main文件,那么創(chuàng )建一個(gè)mian.c文檔即可,這里需要注意,創(chuàng )建main.c后,要將其添加到項目中才行,而不是簡(jiǎn)單的保存。如下圖所示:、

注意:main.c中要有一個(gè)mian函數,否則編譯器會(huì )報錯提示你的。然后就是項目的配置,這個(gè)還是很重要的,下面分別說(shuō)需要配置的地方:
(1)Output選項如下:

這里面勾選了Create HEX File選項,同時(shí)將項目輸出放到了之前創(chuàng )建的Output文件夾。
(2)List選項,將List產(chǎn)生的文件放入到之前創(chuàng )建的List文件夾中。
(3)C/C++配置選項如下:

其中Define選項中,填入:USE_STDPERIPH_DRIVER,STM32F10X_HD,這是告訴編譯器,使用標準外設,還有選擇的CPU類(lèi)型,其中CPU類(lèi)型需要根據你選擇移植的CPU進(jìn)行適當的更改。Include Paths是要包含的頭文件路徑,這個(gè)為了保險,將項目中的所有有.h的文件的文件夾都包含進(jìn)去就可以了。
4.Debug選項如下:

,我使用的是Jlink進(jìn)行燒寫(xiě)調試,所以選擇了如圖所示,還要進(jìn)行settings,如下:

這里要勾選“Reset and Run”,這樣做的目的是,每當燒寫(xiě)下載后,CPU進(jìn)行復位并運行。
5.Utilities選項設置如下所示:

至此,配置完畢,編譯一下,沒(méi)有錯誤,創(chuàng )建一個(gè)簡(jiǎn)單的點(diǎn)亮LED程序,驗證一下即可。
備注說(shuō)明:如果按照這個(gè)步驟操作,編譯,如果出現一些簡(jiǎn)單的錯誤,比如沒(méi)有main函數,沒(méi)有發(fā)現某個(gè)頭文件,那么按照提示解決即可,但是如果發(fā)現了很多怪怪的編譯錯誤,比如說(shuō)未定義u32,u8這些符號時(shí),那就要注意一下了,有可能是MDK版本的問(wèn)題,我在使用MDK低版本的時(shí)候,發(fā)現有問(wèn)題,而使用高版本的時(shí)候就沒(méi)問(wèn)題了,所以需要注意一下。

上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: uCOS-IISTM32移植步

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>