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

STM32CubeIDE開發(fā)(二十九), 如何結(jié)合FreeRTOS開發(fā)STM32程序

這篇具有很好參考價值的文章主要介紹了STM32CubeIDE開發(fā)(二十九), 如何結(jié)合FreeRTOS開發(fā)STM32程序。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、STM32CubeIDE使用內(nèi)置的FreeRTOS

二、創(chuàng)建使用FreeRTOS系統(tǒng)的STM32CubeIDE工程

三、使用FreeRTOS功能

四、編譯及測試


一、STM32CubeIDE使用內(nèi)置的FreeRTOS

??????? 不同于STM32CubeIDE使用像RTThread這些第三方物聯(lián)網(wǎng)系統(tǒng),STM32CubeIDE在安裝時就已經(jīng)在MiddleWare中間件一欄直接支持了FreeRTOS操作系統(tǒng)。

??????? 既然STM32CubeIDE已經(jīng)把FreeRTOS深度整合到了自家的系統(tǒng)中,所以移植及使用FreeRTOS變得非常方便。STM32CubeMX圖形配置界面的MiddleWare一欄,可以設(shè)置FreeRTOS是否開啟來使用該實時系統(tǒng)。

stm32cubeide freertos,STM32CubeIDE開發(fā)實踐案例,stm32,FreeRTOS,嵌入式,stm32cubeIDE,stm32cubeMX

二、創(chuàng)建使用FreeRTOS系統(tǒng)的STM32CubeIDE工程

??????? 本文是基于STM32L496VGT3的MCU芯片創(chuàng)建一個新的STM32工程“stm32L496VGT3_CMSIS_OS_V1”,并使用FreeRTOS系統(tǒng)前,已經(jīng)開啟了lpusart串口通信及三個LED的GPIO_OUTPUT接口,及實現(xiàn)了串口lpusart及LED燈驅(qū)動(關(guān)于這邊部分設(shè)置及實現(xiàn)就略過,讀者可以參考本專欄的其他博文)。

??????? 現(xiàn)雙擊(.ioc)文件進入cubeMX圖像配置界面,開啟使用FreeRTOS系統(tǒng)。在MiddleWare中間件一欄,選擇FreeRTOS,在右邊Interface下來框,會出現(xiàn)Disable、CMSIS_V1和CMSIS_V2三個選項。本文選擇CMSIS_V1進行測試。

stm32cubeide freertos,STM32CubeIDE開發(fā)實踐案例,stm32,FreeRTOS,嵌入式,stm32cubeIDE,stm32cubeMX

???????? 關(guān)于CMSIS_V1和CMSIS_V2的不同,詳見CMSIS ARM官方關(guān)于微控制器軟件接口標準CMSIS定義(如下圖)。Cortex微控制器軟件接口標準(CMSIS)是獨立于供應商的硬件抽象層,用于基于Arm Cortex處理器的微控制器,并且CMSIS提供了到處理器和外圍設(shè)備,實時操作系統(tǒng)以及中間件組件的接口。不同之處簡單來說,v1使得軟件能夠在不同的實時操作系統(tǒng)下運行(屏蔽不同RTOS提供的API的差別),而v2則是拓展了RTOS v1,兼容更多的CPU架構(gòu)和實時操作系統(tǒng),說白話就是,CMSIS_V2是在CMSIS_V1上,兼容CMSIS_V1的,具有更多功能及支持更多硬件型號。

stm32cubeide freertos,STM32CubeIDE開發(fā)實踐案例,stm32,FreeRTOS,嵌入式,stm32cubeIDE,stm32cubeMX

???????? 點擊保存或生成代碼按鈕,會彈出下面對話框:

stm32cubeide freertos,STM32CubeIDE開發(fā)實踐案例,stm32,FreeRTOS,嵌入式,stm32cubeIDE,stm32cubeMX

???????? 這是關(guān)于freertos暴露給用戶的API接口并不是原生的freertos接口,是經(jīng)過cmsis-rtos進行一次包裝之后的,在使用timebase源是有所沖突,編譯器會建議你把timebase源切換到非systick。這是因為freertos的調(diào)度時鐘是強制性使用systick的并且systick的中斷優(yōu)先級被設(shè)置為最低。

??????? 而hal 庫需要使用到的tick計數(shù)源,HAL標準庫有很多有超時功能的函數(shù)接口都用到這個hal timebase。所以編輯器在生成代碼時候就強烈建議hal timebase和freertos 使用的systick不要共用。systick已經(jīng)被強制為最低優(yōu)先級,hal timebase用的話就可能產(chǎn)生計數(shù)不準的情況。

??????? 至于systick已經(jīng)被強制為最低優(yōu)先級,是因為freertos是一個嵌入式實時操作系統(tǒng),要確保中斷能夠立馬得到響應,就要把調(diào)度器的時鐘優(yōu)先級設(shè)置為最低就不會影響其他外設(shè)中斷的及時響應。在一旦在stm32cubemx中勾選了freertos后,systick的優(yōu)先級自動被設(shè)置為最低。

??????? freertos還有個配置優(yōu)先級選項:configMAX_SYSCALL_INTERRUPT_PRIORITY高于該配置的優(yōu)先級中斷中都不能調(diào)用freertos的任何API,但是同時他也不會受freertos的內(nèi)核影響而可以得到最實時的響應。如果在中斷服務函數(shù)中需要使用freertos的API接口函數(shù)的話就要把該中斷的優(yōu)先級配置為小于或等于 configMAX_SYSCALL_INTERRUPT_PRIORITY。

????????在stm32L0系列單片機的優(yōu)先級一共有四個等級:0-3,0為最高優(yōu)先級3為最低。使用freertos以后sytick就在該等級。把 configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 配置為2,這樣特別實時的中斷優(yōu)先級就可以配置為0或者1,而正常需要調(diào)用freertos API的中斷就可以配置為2或者3優(yōu)先級。

??????? 現(xiàn)在按編輯器建議,去修改開啟USE_NEWLIB_REENTRANT

stm32cubeide freertos,STM32CubeIDE開發(fā)實踐案例,stm32,FreeRTOS,嵌入式,stm32cubeIDE,stm32cubeMX

?????????同時調(diào)整HAL TimeBase設(shè)置更換TimeBase源。

stm32cubeide freertos,STM32CubeIDE開發(fā)實踐案例,stm32,FreeRTOS,嵌入式,stm32cubeIDE,stm32cubeMX

???????? 再次點擊保存,編輯器就無告警彈出,生成代碼后,關(guān)于FreeRTOS生成代碼如下:

stm32cubeide freertos,STM32CubeIDE開發(fā)實踐案例,stm32,FreeRTOS,嵌入式,stm32cubeIDE,stm32cubeMX

???????? 并在main,c主函數(shù)文件中,給出了關(guān)于FreeRTOS最簡要的調(diào)用代碼。

stm32cubeide freertos,STM32CubeIDE開發(fā)實踐案例,stm32,FreeRTOS,嵌入式,stm32cubeIDE,stm32cubeMX

???????? 并能編譯通過。

三、使用FreeRTOS功能

??????? 現(xiàn)在再次回到cubeMX圖形編輯界面,進入FreeRTOS配置的任務與隊列配置頁面,添加一個LedTask(閃燈任務),修改任務名為LEDTask,修改Function名為LEDTaskFunc,注意任務名和Function名不能一樣,其他保持默認。

stm32cubeide freertos,STM32CubeIDE開發(fā)實踐案例,stm32,FreeRTOS,嵌入式,stm32cubeIDE,stm32cubeMX

???????? 關(guān)于NewTask幾個屬性欄:

  • ????????Task Name: 設(shè)置任務的名稱,它會基于此名字建立一個指向任務的句柄
  • ????????Priority: 設(shè)置任務的優(yōu)先級,高優(yōu)先級的任務會搶占低優(yōu)先級的任務
  • ????????Stack Size: 設(shè)置任務棧的大小,用于儲存任務相關(guān)的變量,關(guān)于堆棧詳細內(nèi)容請參考
  • ????????Entry Function:設(shè)置任務的入口函數(shù),這個函數(shù)便是開發(fā)者實現(xiàn)任務功能的地方
  • ????????Code Generation Option: IDE自動生產(chǎn)初始代碼的選項,這里選擇默認設(shè)置
  • ????????Parameter: 傳遞給任務的參數(shù)
  • ????????Allocation: 選擇動態(tài)的話是生成在堆中,選擇靜態(tài)的話則生成在靜態(tài)區(qū)
  • ????????Buffer Name和ControlBlock Name:在Allocation選擇靜態(tài)時生效。

??????? 配置好這個LedTask后,保存生成輸出代碼,去FreeRTOS的用戶可編譯源文件freertos.c中,找到LEDTaskFunc函數(shù),這就是我們在cubeMX圖形界面配置的任務入口,可以在這里修改實現(xiàn)自己任務內(nèi)容。

stm32cubeide freertos,STM32CubeIDE開發(fā)實踐案例,stm32,FreeRTOS,嵌入式,stm32cubeIDE,stm32cubeMX

???????? 例如本文在源碼文件引入"../../ICore/led/led.h"驅(qū)動頭文件,該LEDTaskFunc函數(shù)循環(huán)體內(nèi)加上閃燈功能Toggle_led0()。

stm32cubeide freertos,STM32CubeIDE開發(fā)實踐案例,stm32,FreeRTOS,嵌入式,stm32cubeIDE,stm32cubeMX

???????? 關(guān)于LEDTaskFunc函數(shù)調(diào)用,在主函數(shù)中初始化先調(diào)用FreeRTOS初始化API:“MX_FREERTOS_Init()”,然后在調(diào)用osKernelStart()啟用。MX_FREERTOS_Init函數(shù)是圖形配置生成的,在freertos.c文件中。另外為了防止主函數(shù)循環(huán)一直占用資源,調(diào)用一個延時HLA_Delay(100),防止LEDTaskFunc函數(shù)循環(huán)搶不到資源。

stm32cubeide freertos,STM32CubeIDE開發(fā)實踐案例,stm32,FreeRTOS,嵌入式,stm32cubeIDE,stm32cubeMX

stm32cubeide freertos,STM32CubeIDE開發(fā)實踐案例,stm32,FreeRTOS,嵌入式,stm32cubeIDE,stm32cubeMX

四、編譯及測試

??????? 【1】進入項目屬性設(shè)置頁面,配置工程輸出文件格式支持。

stm32cubeide freertos,STM32CubeIDE開發(fā)實踐案例,stm32,FreeRTOS,嵌入式,stm32cubeIDE,stm32cubeMX

???????? 【2】配置程序運行按鈕下來列表,點擊“運行配置”,新建一個配置選項,默認配置即可,選擇串口支持格式?;蛘卟捎闷渌麩龑懝ぞ邔崿F(xiàn)。

stm32cubeide freertos,STM32CubeIDE開發(fā)實踐案例,stm32,FreeRTOS,嵌入式,stm32cubeIDE,stm32cubeMX

???????? 本文開發(fā)板支持ST-Link加載。

stm32cubeide freertos,STM32CubeIDE開發(fā)實踐案例,stm32,FreeRTOS,嵌入式,stm32cubeIDE,stm32cubeMX

???????? 【3】點擊運行按鈕,完成編譯下載

stm32cubeide freertos,STM32CubeIDE開發(fā)實踐案例,stm32,FreeRTOS,嵌入式,stm32cubeIDE,stm32cubeMX

???????? 【4】觀察效果,只有LED0在閃爍,而代碼實現(xiàn)中只有在LEDTaskFunc函數(shù)循環(huán)中調(diào)用了Toggle_led0(),說明FreeRTOS系統(tǒng)已經(jīng)被正確使用:

CubeIDE調(diào)用FreeRTOS實現(xiàn)閃燈任務-CSDN直播

?補充,不好意思,忘了自己等級不夠,放不了視頻,給出圖片效果如下:

stm32cubeide freertos,STM32CubeIDE開發(fā)實踐案例,stm32,FreeRTOS,嵌入式,stm32cubeIDE,stm32cubeMXstm32cubeide freertos,STM32CubeIDE開發(fā)實踐案例,stm32,FreeRTOS,嵌入式,stm32cubeIDE,stm32cubeMX文章來源地址http://www.zghlxwxcb.cn/news/detail-651246.html

到了這里,關(guān)于STM32CubeIDE開發(fā)(二十九), 如何結(jié)合FreeRTOS開發(fā)STM32程序的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 在STM32CubeIDE中使用Tracealyzer圖形化調(diào)試FreeRTOS

    在STM32CubeIDE中使用Tracealyzer圖形化調(diào)試FreeRTOS

    Tracealyzer可以以圖形化的方式跟蹤記錄FreeRTOS操作系統(tǒng)的工作相關(guān)信息。本文結(jié)合官方教程以及自己的實踐,總結(jié)出了Tracealyzer在STM32CubeIDE開發(fā)環(huán)境中的使用方法。 網(wǎng)上很多同類教程是基于MDK(keil的),這里針對STM32CubeIDE進行了修改。 Tracealyzer具有2種工作模式,快照模式snapsho

    2024年02月09日
    瀏覽(22)
  • 開發(fā)環(huán)境搭建-stm32CubeIDE配置

    使用方法如下: 在CubeIDE的安裝路徑STM32CubeIDEplugins下找到org.eclipse.cdt.ui_7.3.201.202205131409.jar,并將此文件改名備份,然后,將下載的同名插件文件復制到該路徑下,重新啟動STM32CubeIDE即可。 百度地址 鏈接: https://pan.baidu.com/s/17qxUiMLNhVgsV0rx0f2U5g 提取碼: a5yf Window-preferences-General

    2024年02月09日
    瀏覽(18)
  • STM32CubeIDE開發(fā)(四), stm32調(diào)試信息串口通信輸出顯示

    STM32CubeIDE開發(fā)(四), stm32調(diào)試信息串口通信輸出顯示

    目錄 一、stm32串口配置 三、串口驅(qū)動功能調(diào)用及編譯實現(xiàn) 四、編譯測試 ??????? 關(guān)于cubeIDE開發(fā)基本技巧及流程,本文不詳細敘述,請參考:cubeIDE快速開發(fā)流程_py_free的博客-CSDN博客_cubeide漢化 一、stm32串口配置 ??????? 本文采用的開發(fā)板是stm32L496VGT3,其有兩個 USB 接口,

    2023年04月08日
    瀏覽(20)
  • 【STM32Cube開發(fā)記錄】1-下載和安裝STM32CubeIDE

    【STM32Cube開發(fā)記錄】1-下載和安裝STM32CubeIDE

    【STM32Cube開發(fā)記錄】1-下載和安裝STM32CubeIDE 【STM32Cube開發(fā)記錄】2-STM32CubeProgrammer的使用 【STM32Cube開發(fā)記錄】3-STM32CubeMX的使用 【STM32Cube開發(fā)記錄】4-標準庫 HAL庫 LL庫 【STM32Cube開發(fā)記錄】5-寄存器和存儲器映射 【STM32Cube開發(fā)記錄】6-STM32核心功能 【STM32Cube開發(fā)記錄】7-Debug調(diào)試功

    2024年01月17日
    瀏覽(52)
  • STM32CubeIDE開發(fā)(一),快速開發(fā)流程初體驗

    STM32CubeIDE開發(fā)(一),快速開發(fā)流程初體驗

    目錄 一、cubeIDE下載、安裝 ?二、創(chuàng)建工程及配置芯片引腳 三、編碼及編譯 四、加載已編譯程序到硬件及測試 五、程序運行效果 一、cubeIDE下載、安裝 ????????STM32CubeIDE是STM32Cube軟件生態(tài)系統(tǒng)的一部分,是面向st芯片的高級C/C++開發(fā)平臺,具有STM32微控制器和微處理器的外

    2024年02月02日
    瀏覽(45)
  • STM32CubeIDE開發(fā)實踐案例-專欄總述

    STM32CubeIDE開發(fā)實踐案例-專欄總述

    STM32CubeIDE開發(fā)專欄總述 目錄 一、本專欄基本結(jié)束 二、專欄內(nèi)容及博文索引(共36篇) ??????? 2.1 基礎(chǔ)知識 ????????2.2 日志打印輸出 ????????2.3 內(nèi)部功能 ??????? 2.4 各種外設(shè) ??????? 2.5 RTOS系統(tǒng)結(jié)合 ????????2.6 人工智能-cube.AI ??????? 2.7 篇外-RTThrea

    2024年02月15日
    瀏覽(20)
  • STM32CubeIDE開發(fā)(十一), STM32實時時鐘(RTC)寫入及讀取日歷時間開發(fā)要點

    STM32CubeIDE開發(fā)(十一), STM32實時時鐘(RTC)寫入及讀取日歷時間開發(fā)要點

    目錄 一、RTC簡介 二、工程創(chuàng)建及配置 ?三、驅(qū)動代碼設(shè)計實現(xiàn) 四、編譯及測試 ????????實時時鐘的縮寫是RTC(Real_Time Clock),核心是晶振,晶振頻率一般為32768 Hz 。它為分頻計數(shù)器提供精確的與低功耗的實基信號。它可以用于產(chǎn)生秒、分、時、日等信息。為了確保時鐘長期

    2024年01月16日
    瀏覽(21)
  • STM32CubeIDE開發(fā)(三十一), stm32人工智能開發(fā)應用實踐(Cube.AI).篇一

    STM32CubeIDE開發(fā)(三十一), stm32人工智能開發(fā)應用實踐(Cube.AI).篇一

    目錄 一、cube.AI簡介及cubeIDE集成 ? ? ? ?1.1 cube.AI介紹 ? ? ? ?1.2 cube.AI與cubeIDE集成與安裝 ? ? ? ? 1.3 cube.AI支持硬件平臺 ? ? ? ? 1.4 cube.AI應用的好處 ?二、FP-AI-SENSING1 ? ? ? ?2.1?FP-AI-SENSING1簡介 ? ? ? ? ? 2.2?FP-AI-SENSING1軟件包支持硬件平臺 三、FP-AI-SENSING1部署 ? ? ? ?

    2024年01月22日
    瀏覽(22)
  • STM32CubeIDE開發(fā)(三十三), stm32人工智能開發(fā)應用實踐(Cube.AI).篇三

    STM32CubeIDE開發(fā)(三十三), stm32人工智能開發(fā)應用實踐(Cube.AI).篇三

    目錄 一、cube.AI實際項目應用 二、創(chuàng)建工程 2.1 工程配置 2.2 外設(shè)代碼設(shè)計 2.3 傳感器數(shù)據(jù)采集與輸出源碼設(shè)計 2.4 編輯下載程序,采集數(shù)據(jù) ?三、模型訓練 四、cube.AI配置及c模型生成 五、模型調(diào)用及測試 ??????? 接篇二,前文都是采用FP-AI-SENSING1案例和配套的B-L475E-IOT01A開

    2024年01月17日
    瀏覽(18)
  • STM32CubeIDE開發(fā)(二), 全面解析cubeMX圖形配置工具

    STM32CubeIDE開發(fā)(二), 全面解析cubeMX圖形配置工具

    目錄 一、cubeIDE 集成cubeMX 二、STM32CubeMX界面簡介 ??????? 2.1 總界面及支持功能 ?????? 【1】 功能頁面 ???????? 【2】支持配置的功能欄目 ???????? 2.2 通信接口外設(shè)配置 ??????? 【1】CAN外設(shè) ???????? 【2】FMC外設(shè) ??????? 【3】I2C外設(shè) ??????? 【4】串

    2023年04月12日
    瀏覽(34)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包