RM新时代网站-首页

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

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

3天內不再提示

如何輕松幾步實現(xiàn)在STM32上運行FreeRTOS任務

黃工的嵌入式技術圈 ? 來源:黃工的嵌入式技術圈 ? 作者:黃工的嵌入式技術 ? 2020-03-01 12:07 ? 次閱讀

之前文章做過一次調查,盡然有大部分人都沒有接觸過RTOS,希望本文能帶領那部分朋友入門。

1寫在前面

以前想要在STM32上跑FreeRTOS操作系統(tǒng),還需要自己一步一步的移植FreeRTOS代碼。

現(xiàn)在使用STM32CubeMX工具,就不需要這么繁雜的移植工作,只需輕松幾步就能讓FreeRTOS跑起來。

本文以STM32L412(NUCLEO-L412KB板卡)為例,其它STM32型號類似。

同時,使用目前(2019.06)最新的MDK和STM32CubeMX工具。因此,需要提前下載安裝工具和軟件包。

2準備工作

主要有三類:

MDK-ARM (含軟件包)

STM32CubeMX (含軟件包)

FreeRTOS源碼(可選)

2.1 MDK-ARM(含軟件包)

這里需要下載安裝MDK-ARM,以及STM32對應的軟件包。

官方安裝包地址:

http://www.keil.com/download/product

官方軟件包地址:

http://www.keil.com/dd2/Pack

具體安裝,使用方法可以參看我之前整理的專欄文章:【專欄】Keil系列教程

2.2 STM32CubeMX (含軟件包)

這里也是一樣,需要下載安裝STM32CubeMX,以及STM32對應的軟件包。

官方下載地址:

www.st.com/stm32cubemx

具體安裝,使用方法可以參看我之前整理的專欄文章:【專欄】STM32CubeMX系列教程

提示:軟件包里包含F(xiàn)reeRTOS源碼,但不是最新的。

2.3 FreeRTOS源碼

上面STM32Cube軟件包其實包含了FreeRTOS源碼,但不是最新版本。

FreeRTOS官網:

www.freertos.org

如果想使用最新版本,或指定某一版本,可以到下面地址下載:

https://sourceforge.net/projects/freertos/files/FreeRTOS

o4YBAF4WizyAHJBXAACx9_lk5dk454.jpg

上面地址包含F(xiàn)reeRTOS歷史版本,如果使用指定版本,將源碼替換即可(一本來說都兼容)。

3STM32CubeMX創(chuàng)建工程

有了STM32CubeMX這個工具,開發(fā)STM32變得更加快捷。

本文以STM32L412KB為例,其它STM32型號原理類似。

1.打開軟件,進入選擇器

2.選中MCU

3.LED引腳配置

4.UART輸出配置

這里配置成異步模式之后,引腳自動配置(我的開發(fā)板RX引腳不是默認,則需要自己配置)。

5.使能FreeRTOS

pIYBAF4Wi0CACBrxAAE_dtnw9x8184.jpg

6.配置FreeRTOS任務

這里創(chuàng)建兩個FreeRTOS任務:Task1和Task2。

o4YBAF4Wi0CAByImAAFn0mGRRPo972.jpg

提示:針對初學者,使用STM32CubeMX配置FreeRTOS時,大部分參數(shù)默認即可。

當你熟悉之后,可以進一步掌握每項參數(shù)。

7.配置時鐘

這里選擇MSI作為時鐘源,進行倍頻,是系統(tǒng)時鐘達到80M。

pIYBAF4Wi0GAQ9DjAAE2y1l0PVs936.jpg

8.工程管理配置

這里參數(shù)是常規(guī)配置,可參看我教程:【專欄】STM32CubeMX系列教程

o4YBAF4Wi0GAfq06AAEIr5-HsRU587.jpg

9.生成并打開工程

o4YBAF4Wi0KAH_MXAAEb0eCZLzY861.jpg

4源碼分析

4.1 在兩個任務中添加應用程序

提示:這里使用了huart2,所以需要包含:#include "usart.h"

pIYBAF4Wi0KAI9cKAAF3qaT5IBQ430.jpg

4.2 說明

任務Task1:間隔500ms閃爍(變化)一次LED(PB3)。

任務Task2:間隔1000ms,串口UART2發(fā)送一次數(shù)據(jù)“Demo...”

osDelay函數(shù)代表系統(tǒng)延時,單位ms.

然后,就是LED閃爍,和UART發(fā)送函數(shù)。

4.3 編譯下載運行

上面步驟完成之后,就可以編譯,然后直接下載運行了,通過串口調試助手可以看見輸出字符“Demo...”。

5工程及源碼下載

為方便初學者,這里提供對應工程和源碼,方便大家學習。

百度網盤:

https://pan.baidu.com/s/1IdsuIlqqFhuJYxMI6EC7dQ

提取碼:7k5i

提示:公號不支持外部鏈接,請復制鏈接到瀏覽器打開。

鏈接后期可能會失效,關注公眾號『strongerHuang』及時獲取動態(tài)。


推薦閱讀:

1.工信部宣布5G商用牌照即將發(fā)放!

2.IC封裝原理及功能特性匯總

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

    關注

    2270

    文章

    10895

    瀏覽量

    355725
  • FreeRTOS
    +關注

    關注

    12

    文章

    484

    瀏覽量

    62139
收藏 人收藏

    評論

    相關推薦

    freertos最多支持多少個任務

    FreeRTOS是一個輕量級的實時操作系統(tǒng)(RTOS),其設計初衷就是為了提供簡單、可靠且高效的實時任務管理。關于FreeRTOS最多支持多少個任務的問題,實際
    的頭像 發(fā)表于 09-02 14:21 ?845次閱讀

    freertos和裸機有什么區(qū)別

    的、搶占式實時操作系統(tǒng)(RTOS),適用于微控制器和小型處理器。它提供了多任務處理、任務優(yōu)先級、時間管理、內存管理、同步機制等功能,使得開發(fā)者能夠更容易地編寫復雜的實時應用程序。 1.2 裸機編程 裸機編程是指在沒有操作系統(tǒng)的情況下直接在硬件
    的頭像 發(fā)表于 09-02 14:13 ?1329次閱讀

    stm32freertos如何進入芯片的sleep模式?

    大家好,我在使用stm32F105時,不使用freertos時,芯片可以正常進入退出sleep模式。但是加入freertos以后,我將一樣的代碼,放在默認任務中,卻進入sleep以后,
    發(fā)表于 05-10 07:07

    STM32CubeMX中的FreeRTOS創(chuàng)建3任務無法運行的原因?

    STM32CubeMX中的FreeRTOS 創(chuàng)建3任務 Task Priority =osPrioirityNoral 等級的任務,無法運行
    發(fā)表于 05-09 07:02

    用的cube生成的freertos工程,串口和任務通過郵箱通訊,結果任務反應很慢是怎么回事?

    初學freertos。用的cube生成的freertos工程,單片機型號位stm32f103vbt6。 建了三個人物,一個是串口任務,一個是LED每秒翻轉一次,一個是空
    發(fā)表于 05-08 08:13

    freertos系統(tǒng)如何劃分任務?

    正在看freertos方面的教程,想請教下如何劃分任務? 比如之前做的一個數(shù)據(jù)采集板,用到了單片機以下功能: 1,單片機通過SPI1和ADC芯片通訊,同時還要通過SPI控制ADC電路部分的其他外圍
    發(fā)表于 05-08 07:16

    IAR中調試freertos系統(tǒng)怎樣才能方便的獲得任務的堆棧情況?

    在IAR中將freertos移植到STM32中,在進行任務堆棧分配時分配多大的堆棧時一個問題,如何比較方便的獲得任務堆棧呢?利用IAR這個平臺的在線調試可以嗎?怎么看,請各位大神各抒己
    發(fā)表于 05-07 08:15

    FREERTOS建了兩個任務,成功運行了,但每次運行2個小時左右就死機的原因?

    FREERTOS建了兩個任務,成功運行了,但是,每次運行2個小時左右就死機,這是什么情況,是堆棧小的原因嗎?
    發(fā)表于 05-06 08:22

    STM32F103VE運行STM32CubeMX生成的freertos工程,FreeRTOS堆棧設置導致任務不執(zhí)行切換怎么解決?

    我使用的STM32F103VE運行STM32CubeMX生成的freertos工程。 一共有兩個任務,TSAK1和TASK2都是翻轉LED
    發(fā)表于 04-26 07:51

    為什么CubeMX設計的FreeRTOS工程只能正常運行3個任務

    用CubeMX4.20設計的FreeRTOS工程有六個任務,出一個任務優(yōu)先級較低外,另外幾個都是較高優(yōu)先級。發(fā)現(xiàn)只有3個任務是正常運行的,還
    發(fā)表于 04-19 08:23

    FreeRTOS里在中斷中掛起任務出錯的原因?怎么解決?

    各位大佬,新手剛學習FreeRTOS現(xiàn)在想在中斷中掛起某個任務,我在教程里看到說有中斷中的恢復函數(shù)xTaskResumeFromISR,但是沒有在中斷中的掛起函數(shù),我搜了一下,有人說直接用
    發(fā)表于 04-16 08:26

    STM32CubeIDE+FreeRtos+LWIP初始化不通過怎么解決?

    現(xiàn)在調試STMF407,用的環(huán)境是STM32CubeIDE。在一開始調試的時候,使能FreeRTOS和LWIP。結果就是LWIP會自動創(chuàng)建一個任務。一開始在配置界面,把這些內容全選上,
    發(fā)表于 04-15 07:42

    STM32L476+ST253993增加freertos,但是代碼下進去系統(tǒng)運行時就卡住,為什么?

    我準備在官方的STM32L476+ST253993增加freertos,但是代碼下進去系統(tǒng)運行時就卡住,單步調試,系統(tǒng)一直卡在prvCheckTasksWaitingTermination中
    發(fā)表于 04-15 07:27

    FreeRTOS任務無故進入掛起狀態(tài)的原因?

    請教大家一個問題,我子啊使用FreeRTOS的時候創(chuàng)建了一個以太網的任務,任務在使用的過程中被無故掛起,請問一下出現(xiàn)這種現(xiàn)象有哪幾種原因呢?
    發(fā)表于 04-09 07:20

    stm32+FreeRTOS+LWIP實現(xiàn)tcp server,在stm32cubeide下正常運行不了幾分鐘就出現(xiàn)死機怎么解決?

    stm32+FreeRTOS+LWIP實現(xiàn)tcp server,同樣的程序在keil下運行正常,在stm32cubeide下,正常運行不了幾
    發(fā)表于 04-03 06:48
    RM新时代网站-首页