在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<s id="cmphk"><label id="cmphk"></label></s>
    <span id="cmphk"><var id="cmphk"></var></span>
    <dfn id="cmphk"><var id="cmphk"></var></dfn>
    <menu id="cmphk"><thead id="cmphk"></thead></menu>

    <address id="cmphk"></address>

      <dfn id="cmphk"></dfn>
      
      
      <span id="cmphk"></span>

      <object id="cmphk"><tt id="cmphk"></tt></object>
      1. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 移植ucosII到STM32F103ZE(二)

        移植ucosII到STM32F103ZE(二)

        作者: 時(shí)間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
        三、 系統(tǒng)uC/OSII簡介及庫文件介紹:
        1. uC/OSII簡介:
        uC/OS 內(nèi)核基本可以分為任務(wù)調(diào)度,任務(wù)同步和內(nèi)存管理三部分:
        任務(wù)調(diào)度
        ucosii為保證實(shí)時(shí)性,給每個(gè)任務(wù)分配一個(gè)不同的優(yōu)先級。當(dāng)發(fā)生任務(wù)切換時(shí),總是切換到就緒的最高優(yōu)先級任務(wù)。有2種情況會(huì)發(fā)生任務(wù)切換。
        1.任務(wù)等待資源就緒或自我延時(shí);
        2.退出中斷;
        情況1可以理解為任務(wù)主動(dòng)放棄cpu的使用權(quán)。情況2可以理解為中斷后,某種資源可能就緒了,需要任務(wù)切換。
        需要注意的是SysTick中斷,這個(gè)中斷是os的“心跳”,必須得有。這樣就使得cpu會(huì)發(fā)生周期性地任務(wù)切換。由于ucosii 不支持時(shí)間片輪轉(zhuǎn)調(diào)度,因此在該中斷中必須做的工作僅有os的時(shí)間管理。也就是調(diào)用OSTimeTick()
        任務(wù)同步
        任務(wù)同步和大多數(shù)操作系統(tǒng)的做法差不多,如果學(xué)過操作系統(tǒng)或是有多線程編程經(jīng)驗(yàn)的話,應(yīng)該很好理解。無非是任務(wù)A 因?yàn)槟硞€(gè)資源未就緒,就放棄 cpu 使用權(quán),等任務(wù) B 或是中斷使該資源就緒,當(dāng)再次任務(wù)進(jìn)行切換時(shí)如果任務(wù) A 優(yōu)先級最高,則任務(wù)A 繼續(xù)執(zhí)行。具體怎么實(shí)現(xiàn)就看上面推薦的書吧。
        內(nèi)存管理
        ucosii的內(nèi)存管理,之前應(yīng)該講過的。
        ucosii 代碼組成
        os_core.c 是ucosii 的核心,它包含了內(nèi)核初始化,任務(wù)切換,事件塊管理等,其中事件塊是各個(gè)同步量(這里我把互斥量,信號量,郵箱,隊(duì)列統(tǒng)稱為同步量,不是很科學(xué),圖個(gè)方便。事件標(biāo)志組不是以事件塊為基礎(chǔ)的,不過原理也差不多)的基礎(chǔ)。
        os_task.c 任務(wù)管理代碼
        os_flag.c 事件標(biāo)志管理代碼
        os_mbox.c 消息郵箱管理代碼
        os_mutex.c 互斥型信號量管理代碼
        os_q.c 消息隊(duì)列管理代碼
        os_sem.c 同步量管理代碼。
        os_mem.c 內(nèi)存管理代碼。
        os_time.c 時(shí)間管理代碼,主要做各種延時(shí)。
        os_tmr.c 定時(shí)器管理代碼
        定時(shí)器管理代碼,這部分代碼時(shí)從V2.81 版才開始有的,邵老師的書講的是V2.55 版的代碼,是沒有這部分內(nèi)容的。如果前面的代碼都理解的話,這部分代碼也是不難理解的。一個(gè)定時(shí)器大體由3 部分組成:定時(shí)時(shí)間,回調(diào)函數(shù)和屬性。當(dāng)定時(shí)時(shí)間到了的話,就進(jìn)行一次回調(diào)函數(shù)的處理,定時(shí)器屬性說明定時(shí)器是周期性的定時(shí)還是只做一次定時(shí)。如果用戶使能了OS_TMR_EN,ucosii 會(huì)在內(nèi)部創(chuàng)建一個(gè)定時(shí)器任務(wù),負(fù)責(zé)處理各個(gè)定時(shí)器。這個(gè)任務(wù)一般應(yīng)該由硬件定時(shí)器的中斷函數(shù)中調(diào)用OSTmrSignal()去激活。所以從本質(zhì)上說os_tmr.c 中的定時(shí)器是由一個(gè)硬件定時(shí)器分化出來的。
        默認(rèn)情況下是由SysTick 中斷里通過OSTimeTickHook()去激活定時(shí)器任務(wù)的。
        移植相關(guān)文件
        os_cpu.h: 進(jìn)行數(shù)據(jù)類型定義,處理器相關(guān)代碼和幾個(gè)函數(shù)原型。
        os_cpu_c.c: 定義一些用戶hook函數(shù)。
        os_cpu_a.asm: 移植需要用匯編代碼完成的函數(shù),主要就是任務(wù)切換函數(shù)。
        os_dbg.c: 內(nèi)核調(diào)試相關(guān)數(shù)據(jù)和函數(shù),可以不改。
        ucosii 內(nèi)核就介紹到這里。
        2. STM32F10x庫文件簡介:
        解壓從ST官網(wǎng)下載的stm32f10x_stdperiph_lib.zip庫文件后,有六個(gè)文件,如下圖:




        其中 Libraries 包含庫的源代碼,Project 包含stm32 各個(gè)外設(shè)的使用范例和一個(gè)工程模板,Utilitiess 是使用 st 公司評估板的例子,_htmresc是兩個(gè)圖標(biāo)stm32f10x_stdperiph_lib_um.chm教我們怎么用標(biāo)準(zhǔn)外設(shè)庫。我們主要關(guān)心 Libraries和Project 文件夾,等會(huì)我們要從中拷取需要的資料。
        1) 建立工程文件夾結(jié)構(gòu):
        準(zhǔn)備使用 32 位單片機(jī),應(yīng)該是個(gè)不小項(xiàng)目,因此工程目錄也應(yīng)做個(gè)規(guī)劃。這里推薦一下所使用的目錄結(jié)構(gòu)。
        Ø 假設(shè)建立了一個(gè)名為stm32-ucosII-demo的文件夾,該目錄下有 6個(gè)文件夾App, Bsp, Libraries, OS-uCOSII, Project, Readme。
        App 用來存放應(yīng)用程序文件,Bsp 用來存放版級驅(qū)動(dòng)文件,Libraries 用來存放 STM32 的標(biāo)準(zhǔn)外設(shè)庫文件,OS-uCOSII 用來存放uCOS 文件,Project用來存放工程文件,Readme用來存放TXT 格式的本項(xiàng)目自述或說明文件。
        Ø Project 下再建立兩個(gè)子文件夾Output 和List。
        Ø OS-uCOSII下再建立兩個(gè)子文件夾core和port。
        2) 整理庫代碼:
        由于 Libraries 下的 CMSIS 文件夾中很多代碼是和編譯器及芯片相關(guān)的,導(dǎo)致文件夾多且深度大,不利于工程維護(hù),實(shí)際上一個(gè)項(xiàng)目往往是用固定的編譯器和芯片,因此有必要對庫進(jìn)行整理。
        a) 把剛解壓的STM32F10x_StdPeriph_Lib_V3.5.0Libraries下的STM32F10x_StdPeriph_Driver文件夾拷貝到新文件夾Stm32-ucosII-demoLibraries 中。
        b) 在新文件夾Stm32-ucosII-demo Libraries 目錄下建立CM3 文件夾,把
        STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3CoreSupport下的core_cm3.c ,core_cm3.h和
        STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10x 下的stm3210x.h,system_stm32f10x.c,system_stm32f100x.h 拷貝到新 LibrariesCM3 文件夾中,并去掉這 3個(gè)文件的只讀屬性。
        c) 在新文件夾LibrariesCM3 目錄下建立 startup文件夾,并根據(jù)你所選的芯片類型,將LibrariesCMSISCM3DeviceSupportSTSTM32F10xstartuparm 下對應(yīng)的啟動(dòng)文件拷貝到 startup 文件夾中。這里拷貝的是 startup_stm32f10x_hd.s。
        d) 把STM32F10x_StdPeriph_Lib_V3.5.0ProjectSTM32F10x_StdPeriph_Template 下的stm32f10x_it.c,stm32f10x_it.h,stm32f10x_conf.h拷貝到新Stm32-ucosII--demoApp 中。
        e) 所有文件的樹形目錄圖如下:



        f) 下面對該庫文件做個(gè)簡單介紹
        LibrariesSTM32F10x_StdPeriph_Driver下的內(nèi)容很好理解就是 stm32的各個(gè)外設(shè)模塊驅(qū)動(dòng)代碼。misc.h和misc.c 是和 CM3 內(nèi)核有關(guān)的NVIC 和 SysTick 的驅(qū)動(dòng)代碼。
        LibrariesCMSIS 下是什么呢?
        上一頁 1 2 下一頁

        關(guān)鍵詞: 移植ucosIISTM32F103Z

        評論


        技術(shù)專區(qū)

        關(guān)閉