亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標(biāo)題: 從0到1教你寫uCOS-III教程(基于STM32單片機(jī)) [打印本頁]

作者: gaojiushigao    時間: 2018-8-8 22:12
標(biāo)題: 從0到1教你寫uCOS-III教程(基于STM32單片機(jī))
1.1 如何學(xué)習(xí)本書
本書與市面上的任何一本 uC/OS-III 相關(guān)的書都不一樣,它們要么是翻譯官方的參考手冊,要么是講如何使用 uC/OS-III,要么是講 uC/OS-III 的源碼,而本書是教你怎么從 0 開始把 uC/OS-III 寫出來,既講了源碼實現(xiàn),也講了 API 如何使用。當(dāng)你拿到本書開始學(xué)習(xí)的時候你一定會驚訝,原來 RTOS 的學(xué)習(xí)并沒有那么復(fù)雜,反而是那么的有趣,原來自己也可以寫 OS,成就感立馬爆棚。

全書內(nèi)容循序漸進(jìn),不斷迭代,前一章都是后一章的基礎(chǔ),必須從頭開始閱讀,不能進(jìn)行跳躍式的閱讀。在學(xué)習(xí)的時候務(wù)必做到兩點:一是不能一味地看書,要把代碼和書本結(jié)合起來學(xué)習(xí),一邊看書,一邊調(diào)試代碼。看書倒是很簡單,那如何調(diào)試代碼?即單步執(zhí)行每一條程序,看看程序的執(zhí)行流程和執(zhí)行的效果與自己大腦所想是不是一樣;二是在每學(xué)完一章之后,必須將配套的例程重寫一遍(切記不要復(fù)制,哪怕是一個分號,但可以抄),做到舉一反三,確保真正理解。在自己寫的時候肯定會錯漏百出,這個時候要珍惜這些錯誤,好好調(diào)試,這是你提高編程能力的最好的機(jī)會。記住,程序不是寫出來的,而是調(diào)試出來的。
1.2 本書的參考資料
1、 uC/OS-III 官方源代碼
2、 uCOS-III 中文翻譯 (電子版)
3、 嵌入式操作系統(tǒng) uCOS-II(第二版) (電子版)
4、 嵌入式實時操作系統(tǒng)μCOS-II 原理及應(yīng)用 任哲編著 (電子版)
5、 CM3 權(quán)威指南 CnR2 (電子版)
6、 STM32F10xxx Cortex-M3 programming manual (電子版)
1.3 本書的編寫風(fēng)格
本書以 uC/OS-III 官方源碼為藍(lán)本,抽絲剝繭,不斷迭代,教你怎么從 0 開始把uC/OS-III 寫出來。書中涉及到的數(shù)據(jù)類型,變量名稱、函數(shù)名稱,文件名稱,文件存放的位置都完全按照 uC/OS-III 官方的方式來實現(xiàn),當(dāng)你學(xué)完這本書之后可以無縫地切換到原版的 uC/OS-III 的使用。要注意的是,在實現(xiàn)的過程中,某些函數(shù)我會去掉一些形參和一些冗余的代碼,只保留核心的功能,但這并不會影響我們學(xué)習(xí)。


第2章 如何學(xué)習(xí) RTOS

2.1 為什么要學(xué)習(xí) RTOS
當(dāng)我們進(jìn)入嵌入式這個領(lǐng)域的時候,往往首先接觸的都是單片機(jī)編程,單片機(jī)編程又首選 51 單片機(jī)來入門。這里面說的單片機(jī)編程通常都是指裸機(jī)編程,即不加入任何 RTOS(Real Time Operation System 實時操作系統(tǒng))的程序。常用的 RTOS 有國外的 FreeRTOS、ucOS、RTX 和國內(nèi)的 Huawei LiteOS、和 RT-Thread 等,其中尤以開源且免費的 FreeRTOS的市場占有率最高,歷史悠久的 ucos 屈居第二。

在裸機(jī)系統(tǒng)中,所有的程序基本都是自己寫的,所有的操作都是在一個無限的大循環(huán)里面實現(xiàn)。現(xiàn)實生活中的很多中小型的電子產(chǎn)品用的都是裸機(jī)系統(tǒng),而且也能夠滿足需求。但是為什么還要學(xué)習(xí) RTOS 編程,偏偏還要整個操作系統(tǒng)進(jìn)來。一是項目需要,隨著產(chǎn)品要實現(xiàn)的功能越來越多,單純的裸機(jī)系統(tǒng)已經(jīng)不能夠完美地解決問題,反而會使編程變得更加復(fù)雜,如果想降低編程的難度,我們可以考慮引入 RTOS 實現(xiàn)多任務(wù)管理,這是使用RTOS 的最大優(yōu)勢。二是學(xué)習(xí)的需要,必須學(xué)習(xí)更高級的東西,實現(xiàn)更好的職業(yè)規(guī)劃,為將來走向人生巔峰迎娶白富美做準(zhǔn)備,而不是一味的在裸機(jī)編程上面死磕。作為一個合格的嵌入式軟件工程師,學(xué)習(xí)是永遠(yuǎn)不能停止的事,時刻都在為將來準(zhǔn)備。書到用時方恨少,我希望機(jī)會來臨時你不要有這種感覺。
為了幫大家理清 RTOS 編程的套路,下面我們簡單的分析下這兩種編程方式的區(qū)別,這個區(qū)別我稱它為學(xué)習(xí) RTOS 的命門,只要打通這個任督二脈,以后的 RTOS 學(xué)習(xí)可以說是易如反掌。在講解這兩種編程方法的區(qū)別的時候,我們主要講方法論,不會涉及到具體的代碼編程,主要還是通過偽代碼來講解。

2.2 如何學(xué)習(xí) RTOS
裸機(jī)編程和 RTOS 編程的風(fēng)格有些不一樣,而且有很多人說 RTOS 的學(xué)習(xí)很難,這就導(dǎo)致學(xué)習(xí)的人一聽到 RTOS 編程就在心理面忌憚三分,結(jié)果就是出師未捷身先死。那么到底如何學(xué)習(xí)一個 RTOS?最簡單的就是在別人移植好的系統(tǒng)之上,看看 RTOS里面的 API 使用說明,然后調(diào)用這些 API 實現(xiàn)自己想要的功能即可。完全,不用關(guān)心底層的移植,這是最簡單快速的入門方法。這種方法各有利弊,如果是做產(chǎn)品,好處是可以快速的實現(xiàn)功能,將產(chǎn)品推向市場,贏得先機(jī),弊端是當(dāng)程序出現(xiàn)問題的時候,因?qū)@個RTOS 不夠了解,會導(dǎo)致調(diào)試?yán)щy,焦頭爛額,一籌莫展。如果是學(xué)習(xí),那么只會簡單的調(diào)用 API,那是不可取的,我們應(yīng)該深入的學(xué)習(xí)其中一款 RTOS。目前市場上現(xiàn)有的 RTOS,它們的內(nèi)核實現(xiàn)方式都差不多,我們只需要深入學(xué)習(xí)其中一款就行。萬變不離其宗,以后換到其它型號的 RTOS,使用起來,那自然是得心應(yīng)手。那如何深入的學(xué)習(xí)一款 RTOS?這里有一個最有效也是最難的方法,就是閱讀 RTOS 的源碼,深究內(nèi)核和每個組建的實現(xiàn)方式,這個過程枯燥且痛苦。但為了能夠?qū)W到 RTOS 的精華,你不入地獄誰入地獄?

市面上雖然有一些講解相關(guān) RTOS 源碼的書,如果你基礎(chǔ)不夠,且先前沒有使用過該款 RTOS,那么源碼看起來還是會非常枯燥,且并不能從全局掌握整個 RTOS 的構(gòu)成和實現(xiàn)。
現(xiàn)在,我們采用一種全新的方法來教大家學(xué)習(xí)一款 RTOS,即不是單純的講里面的API 如何使用,也不是單純的拿里面的源碼一句句來講解。而是,從 0 開始,層層疊加,不斷地完善,教大家怎么把一個 RTOS 寫 0 到 1 寫出來,讓你在每一個階段都能享受到成功的喜悅。在這個 RTOS 實現(xiàn)的過程中,只需要你具備 C 語言的基礎(chǔ)就行,然后就是跟著我們這個教程篤定前行,最后定有所成。
這個用來教學(xué)的 RTOS,我們不會完全自己寫一個,不會再重復(fù)的造輪子,而是選取年齡最大(26 歲)、商業(yè)化最成功、安全驗證最多的 uC/OS-III 為藍(lán)本,將其抽絲剝繭,層層疊加,從 0 到 1 寫出來。在實現(xiàn)的過程中,數(shù)據(jù)類型、變量名、函數(shù)名稱、文件類型等都完全按照 uC/OS-III 里面的寫法,不會自己再重新命名。這樣學(xué)完我們這個課程之后,就可以無縫地過度到 uC/OS-III 的使用。
2.3 如何選擇 RTOS
選擇一個 RTOS 要看下你是學(xué)習(xí)還是做產(chǎn)品,如果是學(xué)習(xí)則選擇一個年齡最大,商業(yè)化最成功,安全驗證最多的來學(xué)習(xí),而且是深入學(xué)習(xí)。那么符合前面這幾個標(biāo)準(zhǔn)的只有ucos,所以,學(xué)一個 RTOS,首選 ucos,而且 ucos 的資料是最多的。當(dāng)然,選擇其他的RTOS 來學(xué)習(xí)也是可以的。學(xué)完之后就是要用了,如果是產(chǎn)品中使用 ucos 就要面臨授權(quán)的問題,就是要給版權(quán)費。一聽到要給錢,大家肯定是不樂意了,所以開源免費的FreeRTOS 就受到各個半導(dǎo)體廠商和開發(fā)者的青睞。目前,F(xiàn)reeRTOS 是市場占有率最高的RTOS,非常適合用來做產(chǎn)品。另外,國內(nèi)的 RT-Thread 也在迅速的崛起,同樣是開源免費。

第3章 新建工程—軟件仿真
  在開始寫 RTOS 之前,我們先新建一個工程,Device 選擇 Cortex-M3 內(nèi)核的處理器,調(diào)試方式選擇軟件仿真,到最后寫完整個 RTOS 之后,我們再把 RTOS 移植到野火 STM32開發(fā)板上,到了最后的移植其實已經(jīng)非常簡單,只需要換一下啟動文件和添加 bsp 驅(qū)動就行。

3.1 新建本地工程文件夾
在開始新建工程之前,我們先在本地電腦端新建一個文件夾用于存放工程。文件夾名字我們?nèi)?RTOS,然后再在該文件夾下面新建各個文件夾和文件,有關(guān)這些文件夾的包含關(guān)系和作用具體見表格 3-1。

表格 3-1 工程文件夾根目錄下的文件夾的作用


3.2 使用 KEIL 新建工程
開發(fā)環(huán)境我們使用 KEIL5,版本為 5.15,高于或者低于 5.15 都行,只要是版本 5 就行。

3.2.1 New Progect
首先打開 KEIL5 軟件,新建一個工程,工程文件放在目錄 Project\RVMDK(uv5)下面,名稱命名為 YH-uCOS-III,其中 YH 是野火拼音首字母的縮寫,當(dāng)然你也可以換成其它名稱,但是必須是英文,不能是中文,切記。

3.2.2 Select Device For Target
當(dāng)命名好工程名稱,點擊確定之后會彈出 Select Device for Target 的選項框,讓我們選擇處理器,這里我們選擇 ARMCM3,具體見圖 3-1。






其實這兩個文件剛開始都是存放在 KEIL 的安裝目錄下,當(dāng)我們配置 Manage Run-Time Environment 選項框之后,軟件就會把選中好的文件從 KEIL 的安裝目錄拷貝到我們的工程目錄:Project\RTE\Device\ARMCM3 下面。其中 startup_ARMCM3.s 是匯編編寫的啟動文件,system_ARMCM3.c 是 C 語言編寫的跟時鐘相關(guān)的文件。更加具體的可直接閱讀這兩個文件的源碼。只要是 Cortex-M3 內(nèi)核的單片機(jī),這兩個文件都適用。

3.3 在 KEIL 工程里面新建文件組
在工程里面添加 User、uC/OS-III Source、uC/OS-III Ports、uC/CPU、uC/LIB 和 Doc 這幾個文件組,用于管理文件,具體見圖 3-4。


對于新手,這里有個問題就是如何添加文件組?具體的方法為鼠標(biāo)右鍵 Target1,在彈出的選項里面選擇 Add Group…即可,具體見圖 3-5,需要多少個組就鼠標(biāo)右擊多少次Target1。


3.4 在 KEIL 工程里面添加文件
在工程里面添加好組之后,我們需要把本地工程里面新建好的文件添加到工程里面。
具體為把 readme.txt 文件添加到 Doc 組,app.c 添加到 User 組,至于 OS 相關(guān)的文件我們還沒有編寫,那么 OS 相關(guān)的組就暫時為空,具體見圖 3-6。


對于新手,這里有個問題就是如何將本地工程里面的文件添加到工程組里里面?具體的方法為鼠標(biāo)左鍵雙擊相應(yīng)的組,在彈出的文件選擇框中找到要添加的文件,默認(rèn)的文件類型是 C 文件,如果要添加的是文本或者匯編文件,那么此時將看不到,這個時候就需要把文件類型選擇為 All Files,最后點擊 Add 按鈕即可,具體見圖 3-7。



3.4.1 編寫 main 函數(shù)

一個工程如果沒有 main 函數(shù)是編譯不成功的,會出錯。因為系統(tǒng)在開始執(zhí)行的時候先執(zhí)行啟動文件里面的復(fù)位程序,復(fù)位程序里面會調(diào)用 C 庫函數(shù)__main,__main 的作用是初始化好系統(tǒng)變量,如全局變量,只讀的,可讀可寫的等等。__main 最后會調(diào)用__rtentry,再由__rtentry 調(diào)用 main 函數(shù),從而由匯編跳入到 C 的世界,這里面的 main 函數(shù)就需要我們手動編寫,如果沒有編寫 main 函數(shù),就會出現(xiàn) main 函數(shù)沒有定義的錯誤,具體見圖 3-8。


main 函數(shù)我們寫在 app.c 文件里面,因為是剛剛新建工程,所以 main 函數(shù)暫時為空,
具體見代碼清單 3-1。
代碼清單 3-1main 函數(shù)
  1. int main(void)
  2. {
  3. for (;;) {
  4. /* 啥事不干 */
  5. }
  6. }
復(fù)制代碼
…………
…………
一共16章節(jié)
…………
完整的pdf格式文檔51黑下載地址(共126頁PDF):
[野火]《從0到1教你寫uCOS-III》.pdf (3.25 MB, 下載次數(shù): 615)



作者: admin    時間: 2018-8-9 03:20
好資料,51黑有你更精彩!!!
作者: 51hei團(tuán)團(tuán)    時間: 2018-8-9 03:20
寫的太棒了,大愛火哥啊.
作者: 51hei團(tuán)團(tuán)    時間: 2018-8-9 03:22
這個是我看過的最通俗易懂的uCOS-III教程
作者: phang    時間: 2018-9-16 10:44
下來看看,謝謝樓主無私
作者: hozhiwen    時間: 2018-9-18 01:55
向上傳資料人致敬!
作者: jjwangxu2008    時間: 2018-9-18 10:06
好資料,51黑有你更精彩!!!

作者: chenyang0427    時間: 2018-10-18 16:44
很好的資料
作者: jxchen    時間: 2018-11-6 23:23
好資料,~~~~~~~~~~~~~~~~~~
作者: zjlzdf    時間: 2018-11-7 08:08
書中的內(nèi)容很好,很實用。謝謝啦!
作者: 南國楓火    時間: 2018-11-7 20:35
這是野火的吧 公眾號里面也發(fā)布了
作者: Zzzzzzzzzzzz    時間: 2018-12-13 09:24
我想下載來學(xué)習(xí),可是沒有積分。。。
作者: bayga456    時間: 2018-12-27 22:09
下載看了一下,不錯,感謝。
作者: zqy1818    時間: 2019-1-11 15:02
下載學(xué)習(xí)下,感謝分享
作者: hpdell    時間: 2019-1-12 12:37
寫的太棒了,大愛火哥啊
作者: hanpingx    時間: 2019-1-13 11:10
贊一個!好資料,51黑有你更精彩!!!
作者: tw丶雪    時間: 2019-1-15 11:26
謝謝上傳
作者: jxchen    時間: 2019-1-20 19:15
寫的太棒了
作者: monkey526    時間: 2019-1-23 17:37
下載下來看看
作者: thmoasmary    時間: 2019-1-28 14:30
帶OS應(yīng)該是做單片機(jī)最高階了
作者: ly830102624    時間: 2019-5-16 10:08
不可多得的好資料,謝謝分享
作者: ztsos123    時間: 2019-5-16 19:55
看上去好利害啊!
下來看看
作者: irisice008    時間: 2019-5-17 20:44
正在學(xué)STM32,不可多得的好資料,謝謝分享!
作者: 天使之淚    時間: 2019-6-30 22:58
不錯,已經(jīng)下載下來,希望可以學(xué)習(xí)學(xué)習(xí)。
作者: wulingqing    時間: 2019-7-2 08:52
這個是最通俗易懂的uCOS-III教程,學(xué)習(xí)中
作者: 鵬博士PBs    時間: 2019-7-2 11:16
很實用
作者: sygsave    時間: 2019-9-27 08:56
感謝分享
作者: sagittar    時間: 2019-11-18 15:53
非常棒的教程,謝謝謝謝!
作者: zqhwsl    時間: 2020-1-16 12:41
好資料  學(xué)習(xí)了
作者: 老電子    時間: 2020-5-2 13:00
正想學(xué)這個,感謝分享
作者: wulingqing    時間: 2020-5-2 17:24
正在學(xué)STM32F,好資料,謝謝分享!
作者: tian1qing    時間: 2020-5-9 10:59
我這點黑幣啊,估計最后都不夠用了,都是好資料,謝謝




歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1