国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1)

這篇具有很好參考價值的文章主要介紹了基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

直接意識代碼:

int main()
{
    while(1)
    {
        //LED1置為高電平 
        ...... 
        //延時1000MS 
        ...... 
        //LED1置為低電平 
        ...... 
        //延時1000MS 
        ...... 
        //LED2置為高電平 
        ...... 
        //延時500MS 
        ...... 
        //LED2置為低電平 
        ...... 
        //延時500MS 
        ......
    }
}

這是我們大腦最希望的添加代碼方式,很顯然他是錯的,兩個任務之間產(chǎn)生了相互的影響,使得兩個任務都執(zhí)行錯誤,這種思想在裸機開發(fā)中肯定是錯的,但是在我們的RTOS中他就可以是對的。

任務型代碼:

//創(chuàng)建LED1任務
void LED1_Task()
{
    //LED1置為高電平 
    ...... 
    //延時1000MS 
    ...... 
    //LED1置為低電平 
    ...... 
    //延時1000MS 
    ...... 
}


//創(chuàng)建LED2任務
void LED2_Task()
{
    //LED2置為高電平 
    ...... 
    //延時500MS 
    ...... 
    //LED2置為低電平 
    ...... 
    //延時500MS 
    ......
}

這是獨立的兩個任務內(nèi)容,我們只需要把他的扔到我們的任務執(zhí)行器里,他就會**“同時”運行了,很多小伙伴就會疑問了,單片機明明只有一個核**,為什么可以同時執(zhí)行多個任務呢?這就需要去了解RTOS操作系統(tǒng)中任務“同時”執(zhí)行的原理。

1.4?任務“同時”執(zhí)行的原理

在RTOS中,RTOS利用了一種類似于**“視覺暫留”的工作原理,多個任務之間快速切換。在ROTS中,可以讓我們的每個任務執(zhí)行一個時間單位**,然后就切換到另外一個任務執(zhí)行一個時間單位,再切換回去,兩個任務都是獨立運行的,互不影響,由于切換的頻率很快,就感覺像是同時運行的一樣。

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

上圖為一個簡單的示意圖,讀者朋友們可以結(jié)合該圖好好理解一下RTOS系統(tǒng)的執(zhí)行過程。

二、?FreeRTOS的手動移植

為了圖方便,筆者這里直接使用CubeMX去生成一個基于HAL庫的初始STM32工程文件。不習慣用HAL庫的,可以找一個標準庫的初始STM32工程文件,進行手動移植工作。

①、建立STM32空工程

這里使用STM32CubeMX快速創(chuàng)建項目,要注意的是我們完成最基本的配置以后,需要將我們的Timebase Source修改一下,修改成除了滴答定時器的其他定時器,如下圖:

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

這里我使用的TIM2作為Timebase Source

為什么不可以使用滴答定時器呢?

FreeRTOS中我們的SysTick定時器被用于了我們的始終基準,它用來實現(xiàn)我們的任務切換,我們的SysTick定時器每次觸發(fā)我們的中斷默認是一毫秒,可以自行修改為其他值

Timebase Source是干嘛的呢?

簡單的說,正常裸機開發(fā)中我們的SysTick定時器是用來主要是用來進行我們的HAL_Delay()延時的,使用其作為基準,前面我們說了SysTick定時器被用于系統(tǒng)任務切換了,所以它就是一直在工作,或者說一直在觸發(fā)中斷,這樣的話我們的**HAL_Delay()就需用使用我們的其他定時器(TIM2)**進行替代其作用了

②、FreeRTOS內(nèi)核下載

這一步將會教大家如何去下載FreeRTOS內(nèi)核以及如何進行移植到我們的項目里面。

首先,登入FreeRTOS的官網(wǎng),地址:FreeRTOS - Market leading RTOS (Real Time Operating System) for embedded systems with Internet of Things extensions for embedded systems with Internet of Things extensions")

點擊右上角的Download FreeRTOS;

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

來到版本選擇界面

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

上面的是FreeRTOS****的最新版本,下面的就是長期維護的版本

我們直接點擊上面這個Github超鏈接

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

然后就依次帶點擊CodeDownload ZIP;

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

但是,這時候下載完成的壓縮波其實并不包含FreeRTOS的子模塊。所以,在該頁面向下翻找。

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

找到Kernel source(內(nèi)核資源)?這里,點擊箭頭處的超鏈接;

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

按照上方步驟下載壓縮包,之后進行解壓,最終成功得到2個文件夾;

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

其中,FreeRTOS-Kernel-mainFreeRTOS的內(nèi)核文件,FreeRTOS-main文件夾下的內(nèi)容則比較繁雜,我們主要看里面Demo文件

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

Demo文件夾里面的文件非常多,不過我們可以找到這樣一個文件夾CORTEX_STM32F103_Keil

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

CORTEX_STM32F103_Keil文件夾為官方將系統(tǒng)已經(jīng)移植好的實例,但是這并不是我們直接移植的,感興趣的小伙伴可以先打看官方移植好的能不能看懂。

③、手動移植FreeRTOS內(nèi)核文件

1、打開第一步建立的新項目

2、左側(cè)項目文件添加兩個新的分組

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

3、建立對應的FreeRTOS文件夾

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

4、打開FreeRTOS-Kernel文件夾

5、主目錄下所有的.C后綴的文件全部復制我們的FreeRTOS文件夾下(一共七個)

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

6、復制include文件夾以及portable文件夾到FreeRTOS文件夾下

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

7、保留FreeRTOS/portable文件夾中的Keil、MemMang、RVDS文件夾,其余全部刪除

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

8、保留FreeRTOS/portable/RVDS文件夾中的ARM_CM3文件夾

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

9、然后如圖進行Keil項目的分組文件配置

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

10、添加對應的頭文件

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

11、直接編譯(出現(xiàn)9個錯誤)

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

④、項目問題修復

缺少FreeRTOSConfig.h文件(FreeRTOS的配置文件)

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

示例項目中復制粘貼并且添加到項目文件夾中(記得添加頭文件路徑)

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

編譯無錯誤

⑤、項目添加處理

雖然沒有錯誤了,但是我們的移植沒有完成,還有一些小步驟需要完成,的確有些繁瑣,好在邏輯性還是比較強的,理解起來相對容易。

在FreeRTOSConfig.h中添加#define xPortPendSVHandler?PendSV_Handler

在FreeRTOSConfig.h中添加#define xPortSysTickHandler SysTick_Handler

在FreeRTOSConfig.h中添加#define vPortSVCHandler SVC_Handler

左邊三個是我們Free RTOS中定義好的函數(shù),右邊的是系統(tǒng)項目本來就定義好的函數(shù),他們的作用小伙伴們可以去了解一下,作為初學者這里不進行拓展,反正就是和我們操作系統(tǒng)的中斷還有任務切換有關的函數(shù)

編譯,還是報錯,重復定義

處理錯誤:?進入對應的文件stm32f1xx_it.c刪除重復的3個函數(shù)

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

OK移植成功了?。。?/strong>

⑥、FreeRTOS點燈項目創(chuàng)建

相關的頭文件引入:用到的頭文件有**“FreeRTOS.h”(操作系統(tǒng)相關)"task.h"(任務相關)**

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

自我介紹一下,小編13年上海交大畢業(yè),曾經(jīng)在小公司待過,也去過華為、OPPO等大廠,18年進入阿里一直到現(xiàn)在。

深知大多數(shù)嵌入式工程師,想要提升技能,往往是自己摸索成長或者是報班學習,但對于培訓機構(gòu)動則幾千的學費,著實壓力不小。自己不成體系的自學效果低效又漫長,而且極易碰到天花板技術停滯不前!

因此收集整理了一份《2024年嵌入式&物聯(lián)網(wǎng)開發(fā)全套學習資料》,初衷也很簡單,就是希望能夠幫助到想自學提升又不知道該從何學起的朋友,同時減輕大家的負擔。

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

既有適合小白學習的零基礎資料,也有適合3年以上經(jīng)驗的小伙伴深入學習提升的進階課程,基本涵蓋了95%以上嵌入式&物聯(lián)網(wǎng)開發(fā)知識點,真正體系化!

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

由于文件比較大,這里只是將部分目錄大綱截圖出來,每個節(jié)點里面都包含大廠面經(jīng)、學習筆記、源碼講義、實戰(zhàn)項目、講解視頻,并且后續(xù)會持續(xù)更新

如果你覺得這些內(nèi)容對你有幫助,可以+V:Vip1104z獲取?。。?(備注:嵌入式)

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

最后

資料整理不易,覺得有幫助的朋友可以幫忙點贊分享支持一下小編~

你的支持,我的動力;祝各位前程似錦,offer不斷,步步高升?。?!

05)]

由于文件比較大,這里只是將部分目錄大綱截圖出來,每個節(jié)點里面都包含大廠面經(jīng)、學習筆記、源碼講義、實戰(zhàn)項目、講解視頻,并且后續(xù)會持續(xù)更新

如果你覺得這些內(nèi)容對你有幫助,可以+V:Vip1104z獲?。。?! (備注:嵌入式)

基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1),程序員,嵌入式

最后

資料整理不易,覺得有幫助的朋友可以幫忙點贊分享支持一下小編~

你的支持,我的動力;祝各位前程似錦,offer不斷,步步高升!?。?/strong>

更多資料點擊此處獲qu??!文章來源地址http://www.zghlxwxcb.cn/news/detail-846006.html

到了這里,關于基于STM32的實時操作系統(tǒng)FreeRTOS移植教程(手動移植)_stm32移植freertos(1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • STM32初學者入門FreeRTOS操作系統(tǒng),多任務實時系統(tǒng)

    STM32初學者入門FreeRTOS操作系統(tǒng),多任務實時系統(tǒng)

    ? ? ? ? FreeRTOS(Free Real-Time Operating System)是一個開源的嵌入式實時操作系統(tǒng),它專門設計用于在資源有限的嵌入式系統(tǒng)中運行。FreeRTOS提供了一些用于任務管理、調(diào)度、同步和通信的功能,使開發(fā)者能夠輕松地創(chuàng)建可靠的嵌入式系統(tǒng)。 以下是FreeRTOS的一些特點和功能: 輕量

    2024年02月11日
    瀏覽(27)
  • STM32操作系統(tǒng)FreeRTOS學習——基于hal庫

    STM32操作系統(tǒng)FreeRTOS學習——基于hal庫

    目錄 一、基礎概念 1、FreeRTOS 2、單片機編程的系統(tǒng)概念 a、裸機系統(tǒng),包括輪詢系統(tǒng)(不包括中斷)和前后臺系統(tǒng)(中斷為前臺,輪詢?yōu)楹笈_) b、多任務系統(tǒng) 3、FreeRTOS編程風格 a、數(shù)據(jù)類型 b、變量名的定義 c、函數(shù)名 d、宏定義 二、Cubemx創(chuàng)建工程 1、創(chuàng)建任務 2、創(chuàng)建隊列

    2024年02月10日
    瀏覽(41)
  • 基于STM32的homeassistant(采用FreeRTOS操作系統(tǒng))【第一章:設備配網(wǎng)、連接服務器、斷網(wǎng)重連、斷服務器重接】

    基于STM32的homeassistant(采用FreeRTOS操作系統(tǒng))【第一章:設備配網(wǎng)、連接服務器、斷網(wǎng)重連、斷服務器重接】

    ? 主控 STM32F103C8T6 WIFI模塊 ESP01S 開發(fā)語言 C 開發(fā)編譯器· KEIL 組網(wǎng)方式 WIFI 服務器協(xié)議 MQTT ESP01S的AT指令配網(wǎng)以及服務器連接 STM32與ESP01S的usart協(xié)議通信 斷網(wǎng)重連以及斷服務器重連 STM32向服務器端口發(fā)送對應指令 ????????ESP01S的配網(wǎng)方式為AT指令集,通過識別對對應的AT指令

    2024年02月12日
    瀏覽(30)
  • 【STM32】STM32 移植鴻蒙操作系統(tǒng)

    【STM32】STM32 移植鴻蒙操作系統(tǒng)

    隨著 OpenHarmony3.1 的正式發(fā)布,其功能也在不斷完善。OpenHarmony LiteOS-M 內(nèi)核是面向IoT領域構(gòu)建的輕量級物聯(lián)網(wǎng)操作系統(tǒng)內(nèi)核,具有小體積、低功耗、高性能的特點,其代碼結(jié)構(gòu)簡單,主要包括內(nèi)核最小功能集、內(nèi)核抽象層、可選組件以及工程目錄等,分為硬件相關層以及硬件無

    2024年02月09日
    瀏覽(14)
  • 基于STM32的homeassistant(采用FreeRTOS操作系統(tǒng))【第一、二章優(yōu)化拓展:Wifi、服務器連接驗證以及UASRT串口區(qū)分】

    基于STM32的homeassistant(采用FreeRTOS操作系統(tǒng))【第一、二章優(yōu)化拓展:Wifi、服務器連接驗證以及UASRT串口區(qū)分】

    ? 主控 STM32F103C8T6 WIFI模塊 ESP01S 開發(fā)語言 C 開發(fā)編譯器· KEIL 組網(wǎng)方式 WIFI 服務器協(xié)議 MQTT STM32 ESP01S 3.3V 3.3V GND GND GPIO2? (USRAT2-TX) RX GPIO3 (USART3-RX) TX 對ESP01S的AT指令的反饋指令進行驗證解析 對ESP的USART2通信串口進行printf端口重映射 對調(diào)試用的USART1通信串口編寫USART_printf函數(shù)并

    2024年02月17日
    瀏覽(14)
  • 使用STM32CubeMX生成ThreadX實時操作系統(tǒng)工程模板

    使用STM32CubeMX生成ThreadX實時操作系統(tǒng)工程模板

    文章發(fā)布于博客園,主頁:https://www.cnblogs.com/-fcy-/。轉(zhuǎn)載請注明出處! 由于需要在stm32上使用USB Host CDC-ECM,連接EC20發(fā)送數(shù)據(jù)到服務器,接觸到了ThreadX實時操作系統(tǒng)。 在調(diào)研過程中,發(fā)現(xiàn)stm32官方USB庫內(nèi)只有Device ECM類,無法作為host連接網(wǎng)卡; 電腦上經(jīng)常使用的tinyusb,對st

    2024年02月04日
    瀏覽(27)
  • 如何剪裁操作系統(tǒng)源碼——移植FreeRTOS的內(nèi)存管理模塊到ARMV8裸片

    如何剪裁操作系統(tǒng)源碼——移植FreeRTOS的內(nèi)存管理模塊到ARMV8裸片

    本文面向的需求場景是,為缺乏標準庫實現(xiàn)的處理器IP移植內(nèi)存管理模塊,即為裸片部署C標準庫中的 malloc() 和 free() 函數(shù)。 具體做法是——從操作系統(tǒng)的內(nèi)存管理組件中剪裁出必要的源碼,適配到目標處理器的開發(fā)環(huán)境(SDK/IDE/CMAKE工程子目錄)中。 1.1 C標準庫中的內(nèi)存管理

    2024年02月13日
    瀏覽(13)
  • FreeRTOS_從底層學習實時操作系統(tǒng)

    FreeRTOS_從底層學習實時操作系統(tǒng)

    目錄 1. 裸機系統(tǒng)和多任務系統(tǒng) 2. 任務的定任務切換的實現(xiàn) 2.1 什么是任務? 2.2 調(diào)度器 2.3 臨界段 3. 空閑任務和阻塞延遲 4. 時間片 裸機系統(tǒng): ? ? ? ? 裸機系統(tǒng) 分為 輪詢系統(tǒng) 和 前后臺系統(tǒng) ;(51單片機就屬于裸機系統(tǒng)) ? ? ? ? 輪詢系統(tǒng) 是在裸機編程的時候,先初始化

    2024年02月07日
    瀏覽(13)
  • FreeRTOS實時操作系統(tǒng)(六)列表與列表項

    FreeRTOS實時操作系統(tǒng)(六)列表與列表項

    FreeRTOS實時操作系統(tǒng)(一)RTOS的基本概念 FreeRTOS實時操作系統(tǒng)(二)任務創(chuàng)建與任務刪除(HAL庫) FreeRTOS實時操作系統(tǒng)(三)任務掛起與恢復 FreeRTOS實時操作系統(tǒng)(四)中斷任務管理 FreeRTOS實時操作系統(tǒng)(五)進入臨界區(qū)、任務調(diào)度器掛起與恢復 FreeRTOS實時操作系統(tǒng)(六)列

    2024年02月10日
    瀏覽(20)
  • STM32中斷分組配置NVIC_PriorityGroup,移植操作系統(tǒng)需需注意NVIC_PriorityGroup_4

    STM32中斷分組配置NVIC_PriorityGroup,移植操作系統(tǒng)需需注意NVIC_PriorityGroup_4

    一、先說明中斷分組的由來 中斷優(yōu)先級分組表: 優(yōu)先級分組 搶占優(yōu)先級 響應優(yōu)先級 bit[7:4] 分配情況 備注 NVIC_PriorityGroup_0 取值:0 取值:0~15 0:4 0bit搶占優(yōu)先級、4bit響應優(yōu)先級 NVIC_PriorityGroup_1 取值:0~1 取值:0~7 1:3 1bit搶占優(yōu)先級、3bit響應優(yōu)先級 NVIC_PriorityGroup_2 取值:0~3

    2024年02月04日
    瀏覽(11)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包