OpenMCU(一):STM32F407 FreeRTOS移植

概述

????????本文主要描述了STM32F407移植FreeRTOS的簡要步驟。移植描述過程中,忽略了Keil軟件的部分使用技巧。默認讀者熟練使用Keil軟件。本文的描述是基于OpenMCU_FreeRTOS這個工程,該工程已經下載放好了移植stm32f407 FreeRTOS的所有文件

????????OpenMCU_FreeRTOS工程的愿景主要有:

? ? ? ? 1.、能移植支持主流mcu的freeRTOS;

? ? ? ? 2、深入分析FreeRTOS代碼和第三方庫代碼,讓嵌入式學習變得非常容易;

? ? ? ? 3、集成一些嵌入式產品中常用的第三方庫文件,并且該工程會開發做一些產品原型,所有的技術方案,就像它的名字一樣,全部開源。

移植步驟

1、keil創建stm32F407的工程

2、工程創建完畢后,在keil中建立分組管理,如下所示:

創建完成后的效果:

3、下載FreeRTOS代碼

從?GitHub - FreeRTOS/FreeRTOS: 'Classic' FreeRTOS distribution. Started as Git clone of FreeRTOS SourceForge SVN repo. Submodules the kernel.下載最新的內核代碼

4、解壓下載的源碼,并找到CORTEX_M4F_STM32F407ZG-SK的demo工程模板

5、在剛才新創建的keil STM32F407ZGT6工程目錄下創建Appication文件夾,

6、將demo工程中的如下文件拷貝到Application文件夾下面.

拷貝后的效果:

7、Application分組添加c文件

8、CMSIS添加system_stm32f4xx.cC文件,文件存放的路徑為:

9、添加STM32F4 BSP驅動文件,文件路徑為:

10、添加啟動文件startup_stm32f407xx.s

11、添加freeRTOS內核C文件,文件路徑為:

12、添加內核移植中的與STM32F4相關的代碼

代碼路徑在kernel/portable部分

13、所有分組添加完后如下圖所示:

14、添加編譯時的頭文件路徑

15、編譯器選項設置

a. target選項

b. c/c++選項

加入STM32F407xx定義

17、修改stm32f4xx_it.c文件中的如下函數定義

__weak void SVC_Handler(void) 
{ vPortSVCHandler(); 
} __weak void PendSV_Handler(void) 
{xPortPendSVHandler();
}__weak void SysTick_Handler(void) 
{ if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED) { xPortSysTickHandler(); } 
} 刪除: __weak void EXTI9_5_IRQHandler(void)和 __weak void EXTI15_10_IRQHandler(void)

17、編譯輸出

工程連接

yanl1229/OpenMCU_FreeRTOS

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72497.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72497.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72497.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

NetBeans 8.2 開發 CIFLog3.5 - 創建WelcomeDemo

NetBeans 8.2 開發 CIFLog3.5 - 創建WelcomeDemo NetBeans 8.2 開發 CIFLog3.5 - 創建WelcomeDemo創建一個基于CIFLog平臺的應用系統1. 下載安裝CIFLog2. 授權使用3. 解決本地機器碼驗證錯誤問題4. 創建一個基于CIFLog平臺的應用系統(1)新建項目&#xf…

ESP8266連接網絡實時上傳數據

要實現這個功能,可以按照以下步驟進行編程。我們將使用Arduino IDE來編寫代碼,并結合ESP8266的WiFi庫、MQTT庫以及Web服務器庫來實現。 1. 準備工作 硬件:ESP8266開發板、溫度傳感器(如DS18B20)、顯示屏(如OLED)。軟件:Arduino IDE、ESP8266庫、PubSubClient庫(MQTT)…

pytest中pytest.ini文件的使用

pytest.ini 是 pytest 測試框架的配置文件,它允許你自定義 pytest 的行為。通過在 pytest.ini 中設置各種選項,可以改變測試用例的發現規則、輸出格式、插件行為等。以下詳細介紹 pytest.ini 文件的使用。 1. 文件位置 pytest.ini 文件通常位于項目的根目錄下,pytest 在運…

MARL零樣本協調之Fictitious Co-Play學習筆記

下列引用來自知乎作者Algernon 知乎link FCP作為ZSC領域兩階段訓練方法的開創者 論文《Collaborating with Humans without Human Data》來自 NeurIPS 2021。這篇論文提出 Fictitious Co-Play (FCP) 來解決 ZSC 問題。論文認為,ZSC 的第一個重要問題是對稱性&#x…

Docker小游戲 | 使用Docker部署DOS游戲合集

Docker小游戲 | 使用Docker部署DOS游戲合集 前言項目介紹項目簡介項目預覽二、系統要求環境要求環境檢查Docker版本檢查檢查操作系統版本三、部署dos-games網頁小游戲下載鏡像創建容器檢查容器狀態檢查服務端口檢查容器日志安全設置四、訪問DOS游戲網頁五、進階玩法下載游戲拷貝…

SpringBoot-模擬SSE對話交互

SpringBoot-模擬SSE對話交互 后端使用SSE進行會話,前端使用Html模擬大模型的問答交互->【前端】【后端】 1-學習目的 本項目代碼倉庫:https://gitee.com/enzoism/springboot_sse 1-核心知識點 1)什么是SSE協議->客戶端發起一次請求&am…

2025 ubuntu24.04系統安裝docker

1.查看ubuntu版本(Ubuntu 24.04 LTS) rootmaster:~# cat /etc/os-release PRETTY_NAME"Ubuntu 24.04 LTS" NAME"Ubuntu" VERSION_ID"24.04" VERSION"24.04 LTS (Noble Numbat)" VERSION_CODENAMEnoble IDubun…

Avalonia 中文亂碼

代碼字體文件設置成支持中文的,但是編譯的代碼還是顯示的亂碼,原因是代碼文件的文件編碼格式不支持中文導致的。 如下面的2個頁面一部分中文顯示正常,一部分顯示正常,一部分顯示亂碼。

國產編輯器EverEdit - 工具欄自定義及認識工具欄上的按鈕

1 設置-高級-工具條 1.1 設置說明 1.1.1 工具條自定義 選擇主菜單工具 -> 設置 -> 常規,在彈出的選項窗口中選擇工具條分類,如下圖所示: 左側窗口是當前支持所有功能按鈕列表(上圖中居中欄),右側的窗口是當前顯示在工具欄…

淘寶商品詳情高級版API接口測試與數據處理指南

在電商數據分析、商品監控和自動化運營中,淘寶商品詳情API接口是不可或缺的工具之一。本文將詳細介紹如何測試淘寶商品詳情高級版API接口的返回數據,并提供完整的數據處理流程,幫助開發者高效利用接口數據。 一、淘寶商品詳情API接口概述 淘…

C++海康相機DEMO

非標設備經常用到相機算法,利用工作之余時間,結合海康相機demo寫一套全面的相機應用,圖像處理常用的有halcon 、 opencv , MIL , visionpro,這里采用目前比較常用的halcon和opencv對相機圖片算法處理。整個…

TMS320F28P550SJ9學習筆記2:Sysconfig 配置與點亮LED

今日學習使用Sysconfig 對引腳進行配置,并點亮開發板上的LED4 與LED5 我的單片機開發板平臺是 LAUNCHXL_F28P55x 我是在上文描述的驅動庫C2000ware官方例程example的工程基礎之上進行添加功能的 該例程路徑如下:D:\C2000Ware_5_04_00_00\driverlib\f28p…

人機交互革命:從觸屏到腦波的13維戰爭

人機交互革命:從觸屏到腦波的13維戰爭 一、交互維度大爆炸:重新定義人機溝通邊界 當ChatGPT開始解析你的微表情,當Neuralink芯片能讀取皮層信號,人機交互已突破【鍵鼠】的次元壁。我們正經歷人類史上最大規模的感官革命&#xff…

使用Qt調用HslCommunication(C++調用C#庫)

使用C/CLI 來調用C#的dll 任務分解: 1、實現C#封裝一個調用hsl的dll; 2、實現C控制臺調用C#的dll庫; 3、把調用C#的dll用C再封裝為一個dll; 4、最后再用Qt調用c的dll; 填坑: 1、開發時VS需要安裝CLI項目庫…

maven高級-03.繼承與聚合-版本鎖定

一.版本鎖定 在maven中&#xff0c;父工程的pom文件中通過<dependencyManagement>來統一管理依賴的版本。 注意&#xff1a; <dependencyManagement>僅僅管理依賴的版本號&#xff0c;并不進行依賴的注入。如果要進行依賴注入還是要使用<dependencies>注解。…

基于opencv消除圖片馬賽克

以下是一個基于Python的圖片馬賽克消除函數實現&#xff0c;結合了圖像處理和深度學習方法。由于馬賽克消除涉及復雜的圖像重建任務&#xff0c;建議根據實際需求選擇合適的方法&#xff1a; import cv2 import numpy as np from PIL import Imagedef remove_mosaic(image_pat…

深入解析/etc/hosts.allow與 /etc/hosts.deny:靈活控制 Linux 網絡訪問權限

文章目錄 深入解析/etc/hosts.allow與 /etc/hosts.deny&#xff1a;靈活控制 Linux 網絡訪問權限引言什么是 TCP Wrappers&#xff1f;工作原理 什么是 /etc/hosts.allow 和 /etc/hosts.deny&#xff1f;匹配規則配置語法詳解配置示例允許特定 IP 訪問 SSH 服務拒絕整個子網訪問…

Spring AI:開啟Java開發的智能新時代

目錄 一、引言二、什么是 Spring AI2.1 Spring AI 的背景2.2 Spring AI 的目標 三、Spring AI 的核心組件3.1 數據處理3.2 模型訓練3.3 模型部署3.4 模型監控 四、Spring AI 的核心功能4.1 支持的模型提供商與類型4.2 便攜 API 與同步、流式 API 選項4.3 將 AI 模型輸出映射到 …

大白話面試中應對自我介紹

在面試中&#xff0c;自我介紹是開場的關鍵環節&#xff0c;它就像你遞給面試官的一張“個人名片”&#xff0c;要讓面試官快速了解你并對你產生興趣。下面詳細講講應對自我介紹的要點及回答范例。 一、自我介紹的時間把控 一般面試中的自我介紹控制在1 - 3分鐘比較合適。時間…

postman請求后端接受List集合對象

后端集合 post請求&#xff0c;即前端請求方式