日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

3天內不再提示

UCOS2_STM32F1移植詳細過程 (三)

黃工的嵌入式技術圈 ? 來源:黃工的嵌入式技術圈 ? 2020-04-07 11:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Ⅰ、概述

上一篇文章是講述ST芯片相關的配置和OS裁剪相關的配置,接著上一篇文章來講述關于UCOS的移植,該文主要針對uC/OS-II Ports下面os_cpu_a.asm、os_cpu_c.c和os_cpu.h文件底層端口代碼來講述。

請下載“UCOS2_STM32F1_3個簡單任務”作為參考工程。

筆者將“UCOS移植詳細過程”分為多篇文章來講述,敬請關注。

Ⅱ、下載(請到我博客下載)

筆者將F0、F1、F3、F4移植到最新UCOS2.92上。移植好的、獨立的4個工程供大家下載學習、研究。建立的任務都是一樣的,只是針對芯片不同,Ports目錄下相關的源代碼有差異、標準外設庫也存在差異。每一個系列針對不同型號芯片只需要適當改一下“型號”就行了。

提供下載的軟件工程都是在板子上運行,保證沒問題才上傳至360云盤。

UCOS基于STM32F0系列實例:

https://yunpan.cn/cRCZrQ3dzeVQq訪問密碼 e73f

UCOS基于STM32F1系列實例:

https://yunpan.cn/cRCZxGFsqHa6Q訪問密碼 39ff

UCOS基于STM32F3系列實例:

https://yunpan.cn/cRCZqPRCWs8UW訪問密碼 b305

UCOS基于STM32F4系列實例:

https://yunpan.cn/cRCZPqbFqXSPR訪問密碼 f177

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:應用實現(xiàn)代碼(配置OS、應用等)

該文主要針對uC/OS-II Ports進行移植描述。我們不使用UCOS自帶的調試功能,這里就不再描述(使用)os_dbg.c文件。

Ⅳ、配置os_cpu_a.asm文件

os_cpu_a.asm文件位于工程uC/OS-II Ports結構下面,主要是系統(tǒng)底層相關的一部分匯編代碼。

該文件主要對外部引用(全局變量、函數(shù))做了一個申明,及部分系統(tǒng)相關源代碼(匯編)做了一個定義。

下面我將定義的幾個源代碼做一個描述,移植過程需要修改的我會重點提示出來。

1.全局申明


該文件開頭對全局變量和函數(shù)進行了一次聲明,只是使用的匯編,就如C語言里面的extern。

上面部分是外部(其他源文件)定義的變量和函數(shù),下面部分是申明本文件定義的函數(shù),下面我會對這定義的源代碼進行講述。

將OS_CPU_PendSVHandler改為PendSV_Handler,為了兼容ST標準外設庫啟動代碼(startup_stm32f10x_hd.s)。

2.NVIC配置


這部分是對NVIC(中斷控制)寄存器相關進行定義,就如預處理中宏定義一樣,對寄存器地址,狀態(tài)進行定義。

3.代碼生成指令


這幾條指令主要是針對匯編指令的一個處理。

4.狀態(tài)保存與恢復


這兩個匯編函數(shù)是程序運行在臨界區(qū),對數(shù)據(jù)的保存和恢復的函數(shù)。主要作用就是保護數(shù)據(jù)不被破壞。

5.運行最高優(yōu)先級任務


這個函數(shù)在任務切換的時候調用,知道任務切換原來的朋友來說這里不難理解。UCOS是按優(yōu)先級來執(zhí)行任務,優(yōu)先級越高(優(yōu)先級數(shù)值越?。饺菀妆粓?zhí)行。當執(zhí)行的任務處于掛起(或刪除)時,系統(tǒng)就需要進行任務切換,切換的規(guī)則就是切換到最高優(yōu)先級去執(zhí)行。

6.上下文切換


系統(tǒng)切換任務可以從兩個地方,也就是從任務級和中斷級。這兩個函數(shù)的意思都一樣,當需要執(zhí)行任務切換時,根據(jù)條件執(zhí)行某一個。

7.PendSV_Handler中斷


PendSV_Handler中斷函數(shù)定義于這里,主要是在執(zhí)行該中斷對M3內核寄存器進行一些操作(保存與修改)。

將OS_CPU_PendSVHandler改為PendSV_Handler,為了兼容ST標準外設庫啟動代碼(startup_stm32f10x_hd.s)。

8.總結os_cpu_a.asm

對于UCOS的移植,os_cpu_a.asm文件主要就是修改OS_CPU_PendSVHandler的名稱,包含申明時的名稱和定義源代碼時的名稱,其他源代碼保持不變。

Ⅴ、配置os_cpu_c.c文件

os_cpu_c.c文件位于工程uC/OS-II Ports結構下面,主要是系統(tǒng)底層相關的一部分C語言接口代碼。

該文件有許多HOOK函數(shù),也就是所謂的鉤子函數(shù),主要用于系統(tǒng)初始化、與任務相關等,如:系統(tǒng)初始化時OSInitHookBegin()、OSInitHookEnd(); 創(chuàng)建任務時OSTaskCreateHook等。其實我們自己移植,有很多HOOK函數(shù)是不需要使用,或者不用去實現(xiàn)函數(shù)體里面的代碼。下面我將講述幾個重要的函數(shù),有些不重要的HOOK函數(shù)不再講述。

下面我將定義的幾個源代碼做一個描述,移植過程需要修改的我會重點提示出來。

1.系統(tǒng)滴答


這些都是關于SysTick系統(tǒng)滴答的宏定義和函數(shù)體,由于我們使用M3標準(ST庫里面有)的SysTick系統(tǒng)滴答函數(shù)接口,我們屏蔽掉os_cpu_c.c里面SysTick相關的定義。

2.OSInitHookBegin


這個函數(shù)被OSInit()開頭調用,也就是我們main函數(shù)開始調用OSInit()就會調用它。

注意:

#if OS_CPU_HOOKS_EN> 0u

也就是需要在os_cfg.h文件里面配置OS_CPU_HOOKS_EN>0.

3.OSTaskStkInit初始化任務堆棧


這個函數(shù)比較重要,在創(chuàng)建任務的時候調用它。主要是對芯片內核寄存器進行一個配置,并現(xiàn)場保護數(shù)據(jù)。這個函數(shù)根據(jù)芯片內核不同,也存在很大不同。

Ⅶ、配置os_cpu.h文件

os_cpu.h文件位于工程uC/OS-II Ports結構下面,主要是系統(tǒng)底層相關的某些定義(堆棧、數(shù)據(jù)類型)、申明(函數(shù))等。

該文件下面源代碼比較簡單,有些不使用,即移植過程需要修改的我會重點提示出來。

1.OS數(shù)據(jù)類型


這部分是為系統(tǒng)定義相關的數(shù)據(jù)類型,這里不用修改。

2.臨界區(qū)管理


我們使用默認使用臨界區(qū)第3模式,這個定義主要是與os_cpu_a.asm文件中定義OS_CPU_SR_Save()函數(shù)有關。

3.函數(shù)申明


函數(shù)申明比較簡單,這里有幾個函數(shù)我們在os_cpu_a.asm和os_cpu_c.c文件中都屏蔽掉了的,這里也將他們屏蔽掉。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5620

    瀏覽量

    130455
  • STM32F10
    +關注

    關注

    0

    文章

    49

    瀏覽量

    16313
  • ucos2
    +關注

    關注

    0

    文章

    15

    瀏覽量

    3716
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    深入剖析STM32L010F4/K4:低功耗32位MCU的卓越之選

    的一款低功耗32位MCU,憑借其出色的性能和豐富的功能,在眾多應用場景中展現(xiàn)出了強大的競爭力。本文將對STM32L010F4/K4進行詳細的剖析,為電子工程師們在設計過程中提供有價值的參考。 文件下載
    的頭像 發(fā)表于 04-15 15:40 ?333次閱讀

    基于極海APM32F4的Azure RTOS ThreadX移植過程分享

    。想著就動手,本文記錄了APM32F4移植ThreadX RTOS的過程,供各位做個參考,權當拋磚引玉了。
    的頭像 發(fā)表于 04-02 11:30 ?1159次閱讀
    基于極海APM32<b class='flag-5'>F</b>4的Azure RTOS ThreadX<b class='flag-5'>移植</b><b class='flag-5'>過程</b>分享

    STM32F042x4/STM32F042x6微控制器深度解析:特性、應用與設計要點

    STM32F042x4/STM32F042x6微控制器深度解析:特性、應用與設計要點 在嵌入式系統(tǒng)開發(fā)領域,微控制器的選擇至關重要,它直接影響著產品的性能、功能和成本。今天,我們就來深入探討一下意法
    的頭像 發(fā)表于 03-19 17:15 ?669次閱讀

    LAT1171+STM32F745 USART1 Bootloader 失敗原因分析與解決

    使用 STM32F745 進行產品開發(fā)的時候,出現(xiàn)了使用 STM32CubeProgramer 無法通過 USART1 Bootloader 進行程序升級的問題。為了解決客戶的問題,我在 NUCLEO-
    發(fā)表于 01-11 17:33 ?0次下載

    CW32L012與STM32F103的角運算性能對比

    沒有硬件浮點運算單元。 但在運算角函數(shù)時,CW32L012支持CORDIC算法。 二、 角運算性能具體分析 1:標準庫浮點運算(如 math.h 的 sinf, cosf) 這是最常用但也是最慢的方式。
    的頭像 發(fā)表于 12-29 15:32 ?2547次閱讀
    CW32L012與<b class='flag-5'>STM32F</b>103的<b class='flag-5'>三</b>角運算性能對比

    onsemi電平ANPC Q2Pack模塊:NXH800A100L4Q2F2S1G/P1G與NXH800A100L4Q2F2S2G/P2G的詳細解析

    在電子工程師的日常工作中,選擇合適的功率模塊對于設計的成功至關重要。今天,我們就來深入探討一下onsemi推出的電平ANPC Q2Pack模塊——NXH800A100L4Q2F2S1G/P1
    的頭像 發(fā)表于 12-04 15:51 ?1287次閱讀
    onsemi<b class='flag-5'>三</b>電平ANPC Q<b class='flag-5'>2</b>Pack模塊:NXH800A100L4Q<b class='flag-5'>2F2S1</b>G/P<b class='flag-5'>1</b>G與NXH800A100L4Q<b class='flag-5'>2F2S2</b>G/P<b class='flag-5'>2</b>G的<b class='flag-5'>詳細</b>解析

    STM32MP257F-EV1評估板深度解析與技術應用指南

    STM32MP257F-EV1包含一個ST-LINK嵌入式調試工具、LED、按鈕、1Gbit/s以太網端口、兩個CAN FD端口以及一個USB Type-C? DRD連接器。此外,該板還設有兼容Raspberry Pi?
    的頭像 發(fā)表于 10-20 11:49 ?1725次閱讀
    <b class='flag-5'>STM32MP257F-EV1</b>評估板深度解析與技術應用指南

    移植 rt_vsnprintf_full.c 替換掉 原來的 rt_vsnprintf 之后 打印后出現(xiàn)死機,什么原因導致的?

    1.環(huán)境: RTT4.1.1 STM32F407 移植代碼鏈接:https://blog.csdn.net/Porter_007/article/details/140172740 移植
    發(fā)表于 10-09 06:55

    STM32+esp8266連接機智云,上傳溫濕度數(shù)據(jù)并控制繼電器開關(平臺配置、代碼生成、代碼移植

    本教程將詳細介紹如何將STM32微控制器與ESP8266Wi-Fi模塊連接到機智云平臺,實現(xiàn)溫濕度數(shù)據(jù)的上傳與繼電器的遠程控制。通過此過程,您將學會如何配置機智云平臺,燒錄ESP8266固件,
    的頭像 發(fā)表于 07-15 18:54 ?1535次閱讀
    <b class='flag-5'>STM32</b>+esp8266連接機智云,上傳溫濕度數(shù)據(jù)并控制繼電器開關(平臺配置、代碼生成、代碼<b class='flag-5'>移植</b>)

    STM32F10xxx參考手冊

    STM32F1XX數(shù)據(jù)手冊中文版
    發(fā)表于 07-10 16:09 ?10次下載

    機智云配網教程第期:單片機代碼移植實戰(zhàn)

    stm32f103c8t6,WiFi模塊:ESP-01s,下載器:ST-LINK2.軟件:keil5的工程文件模板,mcu代碼包代碼資源:未移植移植后(注:本文是基于
    的頭像 發(fā)表于 07-01 17:32 ?2198次閱讀
    機智云配網教程第<b class='flag-5'>三</b>期:單片機代碼<b class='flag-5'>移植</b>實戰(zhàn)

    Analog Devices / Maxim Integrated MAX96714/F/R單GMSL2/1轉CSI-2解串器數(shù)據(jù)手冊

    Analog Devices MAX96714/F/R單GMSL2/1轉CSI-2解串器可將GMSL?2/
    的頭像 發(fā)表于 06-12 11:21 ?1394次閱讀
    Analog Devices / Maxim Integrated MAX96714/<b class='flag-5'>F</b>/R單GMSL<b class='flag-5'>2</b>/<b class='flag-5'>1</b>轉CSI-<b class='flag-5'>2</b>解串器數(shù)據(jù)手冊

    STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4編程手冊

    電子發(fā)燒友網站提供《STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4編程手冊.pdf》資料免費下載
    發(fā)表于 06-06 17:06 ?17次下載

    STM32F40xxx和STM32f41xx flash編程手冊

    PM0081_STM32F40xxx and STM32F41xxx單片機編程手冊
    發(fā)表于 06-06 17:02 ?8次下載

    STM32與機智云連接實現(xiàn)步驟與技巧(下篇):機智云代碼移植與優(yōu)化

    機智云SDK,集成API,實現(xiàn)數(shù)據(jù)傳輸和設備狀態(tài)同步,并分享移植過程中的常見問題及解決方法,幫助開發(fā)者順利實現(xiàn)云端連接。機智云相關代碼開始移植相關移植步驟
    的頭像 發(fā)表于 05-23 18:10 ?1369次閱讀
    <b class='flag-5'>STM32</b>與機智云連接實現(xiàn)步驟與技巧(下篇):機智云代碼<b class='flag-5'>移植</b>與優(yōu)化
    岳阳县| 资中县| 彰化县| 武强县| 合水县| 江西省| 龙门县| 绥宁县| 开封县| 海林市| 门源| 琼海市| 湖口县| 永修县| 田林县| 永寿县| 泰宁县| 临洮县| 白山市| 阜平县| 长寿区| 宜昌市| 南郑县| 柳林县| 海安县| 余江县| 荥阳市| 惠来县| 巴中市| 三亚市| 纳雍县| 兰坪| 大埔区| 甘谷县| 越西县| 东平县| 五原县| 林周县| 永新县| 永登县| 灌云县|