在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

UCOS2_STM32F1移植詳細過程 (四)

黃工的嵌入式技術圈 ? 來源:黃工的嵌入式技術圈 ? 2020-04-07 11:38 ? 次閱讀

Ⅰ、概述

上一篇文章是講述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
收藏 人收藏

    評論

    相關推薦

    基于機智云移植STM32L496G代碼移植

    前言最近我拿到了STM32L496AGMCU,發現其擴展版可以連接ESP-01S。我想嘗試將開發板連接到我們的機智云上,并根據機智云提供的文檔進行程序移植STM32CubeMX移植
    的頭像 發表于 09-20 08:05 ?461次閱讀
    基于機智云<b class='flag-5'>移植</b><b class='flag-5'>STM32</b>L496G代碼<b class='flag-5'>移植</b>

    【GD32 MCU 移植教程】10、從STM32F030系列移植到GD32E230系列

    GD32E230 對比 STM32F030 有著很好的兼容性和更高的性價比,內核和外設都有所增強。本人曾做過產品的 MCU 替換,將基于 STM32F0xx 1.5.0 固件庫的應用程序移植
    的頭像 發表于 09-07 10:24 ?727次閱讀
    【GD32 MCU <b class='flag-5'>移植</b>教程】10、從<b class='flag-5'>STM32F</b>030系列<b class='flag-5'>移植</b>到GD32E230系列

    【GD32 MCU 移植教程】9、從 STM32F10x 系列移植到 GD32F30x 系列

    對比、外設及性能對比以及從 STM32F10x 移植到 GD32F30x 的移植步驟,旨在讓開發者能夠快速從STM32F10x
    的頭像 發表于 09-07 09:57 ?862次閱讀
    【GD32 MCU <b class='flag-5'>移植</b>教程】9、從 <b class='flag-5'>STM32F</b>10x 系列<b class='flag-5'>移植</b>到 GD32<b class='flag-5'>F</b>30x 系列

    【GD32 MCU 移植教程】8、從 STM32F4xx 系列移植到 GD32F4xx 系

    、外設及性能對比以及從 STM32F4xx 移植到 GD32F4xx 的移植步驟,旨在讓開發者能夠快速從STM32F4xx
    的頭像 發表于 09-06 09:40 ?1404次閱讀
    【GD32 MCU <b class='flag-5'>移植</b>教程】8、從 <b class='flag-5'>STM32F</b>4xx 系列<b class='flag-5'>移植</b>到 GD32<b class='flag-5'>F</b>4xx 系

    【GD32 MCU 移植教程】5、GD32E230 系列移植到 GD32F330 系列

    移植到 GD32F330 系列的需求,本文 檔專門針對既有的 GD32E230 代碼如何移植到 GD32F330 做一個詳細的介紹;
    的頭像 發表于 09-03 10:05 ?1278次閱讀
    【GD32 MCU <b class='flag-5'>移植</b>教程】5、GD32E230 系列<b class='flag-5'>移植</b>到 GD32<b class='flag-5'>F</b>330 系列

    【GD32 MCU 移植教程】2、從 GD32F303 移植到 GD32F503

    GD32E503 系列是 GD 推出的 Cortex_M33 系列產品,該系列資源上與 GD32F303 兼容度非常高,本應用筆記旨在幫助您快速將應用程序從 GD32F303 系列微控制器移植到 GD32E503 系列微控制器。
    的頭像 發表于 08-31 09:36 ?1519次閱讀
    【GD32 MCU <b class='flag-5'>移植</b>教程】<b class='flag-5'>2</b>、從 GD32<b class='flag-5'>F</b>303 <b class='flag-5'>移植</b>到 GD32<b class='flag-5'>F</b>503

    基于STM32的E01和E01C驅動移植

    實驗簡介基于STM32F103C8T6的E01系列(nRF24L01P)和E01C系列(SI24R1)的EBYTE官網例程移植。EBYTE官網例程是基于STM8L151編寫,本次實驗的目的是將該例程
    的頭像 發表于 08-30 12:35 ?401次閱讀
    基于<b class='flag-5'>STM32</b>的E01和E01C驅動<b class='flag-5'>移植</b>

    自制一款兼容STM32F1/F4芯片的飛控板

    自己制作的一款兼容STM32F1/F4芯片的飛控板。
    發表于 07-04 14:07 ?0次下載

    STM32F103xC,STM32F103xD,STM32F103xE中文資料

    電子發燒友網站提供《STM32F103xC,STM32F103xD,STM32F103xE中文資料.pdf》資料免費下載
    發表于 06-17 14:12 ?4次下載

    stm32f4跑ucos+emwin5.16 gui_init()初始化失敗的原因?

    我用stm32f4discovery 連了一塊ra8875的4.3寸屏幕, ucosii已經移植成功了,但是移植emwin5。16的時候在gui初始化的時候就會進入 HardFault_Handler(); 不知道是什么情況;
    發表于 05-17 12:33

    STM32F072怎么移植os?

    STM32F072 怎么移植os
    發表于 05-17 08:22

    STM32移植UCOS和編寫GUI程序的平臺如何建立?

    請教STM32移植UCOS和編寫GUI程序的平臺如何建立 ,需要哪些軟件,請各位大蝦、前輩指教,分享一下,或推薦一下教程,謝謝
    發表于 05-15 08:18

    移植LwIP+uCOS提示 errno沒有定義怎么解決 ?

    請教下,移植 LwIP+uCOS,提示 errno 沒有定義 ? 是哪里沒有配置好哇 ???
    發表于 04-23 07:21

    STM32H743的LwIP移植uCOS-III上,ETH_IRQn中斷沒有反應 是怎么回事?

    請教下,吧 H743 的LwIP 移植uCOS-III 上,ETH_IRQn中斷沒有反應 ? 程序在 FreeRTOS 的系統上運行時可以的,但就是移植uCOS-III 上就
    發表于 04-22 07:09

    請問如何快速移植stm32f1的程序到STM32C0中?

    如何快速移植stm32f1的程序到STM32C0中?
    發表于 03-08 06:54
    主站蜘蛛池模板: 天天躁夜夜躁狠狠躁躁| 日韩一级片在线观看| 天天干精品| 国内外精品免费视频| 三级网站免费| 成人影院在线观看| 国产精品久久国产三级国不卡顿 | 天天躁狠狠躁| 欧美一级在线全免费| 午夜影院在线视频| 成人免费看黄页网址大全| 青草青青视频| 特黄大片aaaaa毛片| 在线天堂bt中文www在线| 亚洲成人精品| 免费看啪啪网站| 国产成人在线影院| 乱人伦精品一区二区| 日韩夜夜操| 失禁h啪肉尿出来高h| 亚洲日本中文字幕天天更新| 国产一区二区三区影院| 成人a级特黄毛片| 成人小视频在线| 午夜精品在线观看| 天天干天天拍天天操| 天天综合天天干| 久久久免费视频播放| h视频国产| 亚洲欧美在线一区二区| tube69欧美最新片| 中文字幕日本一区波多野不卡| 久久在线播放| 二区三区视频| 亚洲小视频在线播放| 亚洲国产成人久久三区| 亚洲网在线观看| 婷婷开心激情| 日本午夜色| 欧美成人生活片| 美女污污网站|