日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RT-Thread移植到STM32F103ZET6具体操作步骤(利用keil5新建工程,添加RT-Thread源码到工程)

發(fā)布時間:2025/4/16 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RT-Thread移植到STM32F103ZET6具体操作步骤(利用keil5新建工程,添加RT-Thread源码到工程) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

RT-Thread移植(基于STM32F103ZET6)? ? ??

? ? ? ? ?因為學習RT-Thread的原因,需要把RT-Thread移植到STMF103ZET6上,在RT-Thread官網下載的原文件中實際上已經STM32F10x的工程了,只需簡單的幾步就可以完成在STM32F103ZET6上的運行,但是這樣一來就對整個原文件的結構不是很了解,但是因為是學習,所以我們就不要太在意麻煩了。本文利用Keil5,新建一個工程,然后在工程中添加RT-Thread中的文件。

? ? ? ? 因為自身水平有限,所以可能工程建立的各個文件結構不是特別合理,或者還有很多地方的設置沒有到位,但是這就是我目前對各個文件的理解,所以僅供參考。本文中有些文件不知道有什么作用,所以有些文件的添加參考了官網給的工程。待日后學的更加深入的時候,再來修改文中不合理的地方,還望諒解。


一、在RT-Thread官方網上下載操作系統源碼(https://www.rt-thread.org/page/download.html)


這里我下載的是2.0.1版本,文件結構如下:



Bsp ---- 板級支持包,針對不同的板子規(guī)劃出的不同的驅動文件;

components ---- 包含RT-Thread的各個組件:finsh、文件系統,等等*;

documentation ---- 一些介紹性文檔,包括代碼的風格要求;

examples ---- 各種示例代碼,是很好的學習素材;

include ---- 一些頭文件;

libcpu---- 各種CPU體系結構下的相關移植;

src ---- RT-Thread內核核心代碼;

tools ---- 使用Scon自動化創(chuàng)建工具時需要的一些文件;

AUTHORS ---- RT-Thread開發(fā)者列表;

COPYING ---- 權限說明;

? ? ? *:我的理解是就相當與功能擴展,比如你需要finsh就加進去,不用就不加,這樣可以減少最后可執(zhí)行文件的體積,在這里我們使用了finsh,方便學習,也正好學習怎么添加組件。


二、建立工程文件夾(RT-Thread2.0.1_STM32F103ZE?)


1、在桌面上建立一個?RT-Thread2.0.1_STM32F103ZE 文件夾;

2、打開?RT-Thread2.0.1_STM32F103ZE 文件夾,建立以下文件夾:

application :存放應用程序

bsp :存放板級支持包和底層驅動

components :存放操作系統組件

DeviceDrivers :設備框架

libcup :各種不同CPU的內核代碼

MDK-OBJ :存放kile5在編譯過程中生成的中間文件

RT_Thread-2.0.1 :存放操作系統的相關文件


?完成后如下圖所示:




3 打開kile5建立工程

目錄定位到桌面上的?RT-Thread2.0.1_STM32F103ZE? 過程名稱為 RTT_F103ZE?選擇芯片?ST32F103ZE?

Options for Target >>> Target >>> 設置外部晶振8.0MHz

Options for Target >>> Output >>> Select Folder for Objects >>> 定位到 ?桌面:RT-Thread2.0.1_STM32F103ZE\MDK-OBJ目錄下

Options for Target >>> Listing >>> Select Folder for Objects >>> 定位到 ?桌面:RT-Thread2.0.1_STM32F103ZE\MDK-OBJ目錄下

Options for Target >>> c/c++ >>> 添加宏定義 STM32F10X_HD, USE_STDPERIPH_DRIVER(逗號隔開)

Options for Target >>> Linker >>> Misc controls >>> 添加 --keep __fsym_* --keep __vsym_* ? --keep __rt_init*(保證編譯時不會濾除掉工程沒有調用的代碼)

暫時就這樣,其余項保持默認就好,等在工程目錄下添加完文件后再建立工程結構,和添加頭文件搜索路徑就好了;


4 開始添加各個文件(根據之前建立的工程文件夾中的目錄含義添加文件,這樣比較有條理)

以下我就以文件路徑來表示復制過程


2.0.1\bsp\stm32f10x\applications >>>?Desktop\RT-Thread2.0.1_STM32F103ZE\application

application.c 、startup.c

2.0.1\bsp\stm32f10x >>>?Desktop\RT-Thread2.0.1_STM32F103ZE\bsp

drivers 、Libaries

2.0.1\bsp\stm32f10x >>>?Desktop\RT-Thread2.0.1_STM32F103ZE\RT_Thread-2.0.1

rtconfig.h

2.0.1\components >>>?Desktop\RT-Thread2.0.1_STM32F103ZE\components

除drivers外的全部文件

2.0.1\components >>>?Desktop\RT-Thread2.0.1_STM32F103ZE\DeviceDrivers

drivers

2.0.1\libcpu\arm >>>?Desktop\RT-Thread2.0.1_STM32F103ZE\libcup

common 、cortex-m3

2.0.1 >>>?Desktop\RT-Thread2.0.1_STM32F103ZE\RT_Thread-2.0.1

src 、include

這里在 2.0.1\components目錄下有一個叫drivers 的文件夾,按照他的意思應該是設備驅動框架相關文件,但是有一點不理解為什么放在組件文件夾下;所以在復制過程中我把它單獨拿了出來,放在了Desktop\RT-Thread2.0.1_STM32F103ZE\DeviceDrivers文件夾下,比較適合我來理解,該目錄下還有一個叫CMSIS的文件夾,暫時也不知道是干什么的,就一起放在Desktop\RT-Thread2.0.1_STM32F103ZE\components下了;在2.0.1\bsp\stm32f10x 目錄下也有一個叫 drivers 的文件夾,這個文件夾實際上就是存放了符合設備框架的板級驅動,這樣應用程序就可以控制各種設備了。我們以后也可以寫自己的板級驅動,然后這樣在應用中就可以調用不同的設備。這里工程的架構差不多就出來了,打開之前建立的工程,打開Manage Project Items開始添加文件


5 添加工程文件以及設置頭文件搜索路徑


首先Groups設置如下:



這里可以看到和我的文件夾的關系很像(都有application,bsp,components...而且作用都像字面意思一樣),這里應該是我自己的習慣吧,這樣添加和刪除文件比較簡單。條理也比較清晰。


現在就是在Groups里添加原文件了


application :application.c ?starup.c

  • 文件就在原文件夾application下

bspstm32庫函數所有*.c源文件(stm32f10x_adc.c?stm32f10x_rcc.c.....) ?core_cm3.c ?system_stm32f10x.c ?startup_stm32f10x_hd.s ? stm32f10x_conf.h(這里是為了比較好修改) ??stm32f10x_it.c

  • 這些文件在bsp目錄下都可以找到

components : ?components.c

  • 在components/init目錄下

DeviceDrivers :?DeviceDrivers >>> driver >>> src 下的全部文件 ? ?DeviceDrivers >>> driver 下用到哪個設備框架就加哪個設備原文件(這里加了serial,因為要用到串口) ?

  • DeviceDrivers >>> driver 目錄下都可以找到

contex-m3 : ?backtrace.c ?div0.c ?showmem.c ?context_rvds.S ?cpuport.c

  • libcpu目錄下都可以找到

RT-Thread-2.0.1 :RT_Thread-2.0.1 >>> src 目錄下所有文件

  • RT_Thread-2.0.1 >>> src 目錄下可以找到

finsh : components >>> finsh目錄下所有*.c文件

  • components >>> finsh目錄下都能找到


Drivers : board.c ?led.c ?usart.c


  • bsp >>> drivers目錄下都可以找到

頭文件搜索路徑設置如下圖:


至此整個過程就建立起來了,接下來就進行驗證
三、編譯燒寫,驗證
驗證就利用已經寫好的led實驗來驗證 我的板子的led燈在PA2,所以打開led.c文件做一些修改
  • 設置生成hex文件
  • 點擊build按鈕
  • 編譯完后0錯誤1警告
libcup\cortex-m3\context_rvds.S(206): warning: A1581W: Added 2 bytes of padding at address 0xd6 網上查了一下說是沒有字節(jié)對齊,在警告定位到的位置 END 前加一個 NOP 就好了

之后再按build ? 0錯誤0警告


  • 把生成的hex文件燒寫進板子
  • 打開SecureCRT連接串口,按下復位
LED燈在閃爍

串口輸出:


輸入list(),回車


到此,移植驗證結束,可以愉快的學習RT_Thread了!

總結

以上是生活随笔為你收集整理的RT-Thread移植到STM32F103ZET6具体操作步骤(利用keil5新建工程,添加RT-Thread源码到工程)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。