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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

黃工的嵌入式技術(shù)圈 ? 來(lái)源:黃工的嵌入式技術(shù)圈 ? 作者:黃工的嵌入式技術(shù) ? 2020-03-01 12:07 ? 次閱讀

之前文章做過(guò)一次調(diào)查,盡然有大部分人都沒(méi)有接觸過(guò)RTOS,希望本文能帶領(lǐng)那部分朋友入門(mén)。

1寫(xiě)在前面

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

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

本文以STM32L412(NUCLEO-L412KB板卡)為例,其它STM32型號(hào)類(lèi)似。

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

2準(zhǔn)備工作

主要有三類(lèi):

MDK-ARM (含軟件包)

STM32CubeMX (含軟件包)

FreeRTOS源碼(可選)

2.1 MDK-ARM(含軟件包)

這里需要下載安裝MDK-ARM,以及STM32對(duì)應(yīng)的軟件包。

官方安裝包地址:

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

官方軟件包地址:

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

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

2.2 STM32CubeMX (含軟件包)

這里也是一樣,需要下載安裝STM32CubeMX,以及STM32對(duì)應(yīng)的軟件包。

官方下載地址:

www.st.com/stm32cubemx

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

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

2.3 FreeRTOS源碼

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

FreeRTOS官網(wǎng):

www.freertos.org

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

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

o4YBAF4WizyAHJBXAACx9_lk5dk454.jpg

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

3STM32CubeMX創(chuàng)建工程

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

本文以STM32L412KB為例,其它STM32型號(hào)原理類(lèi)似。

1.打開(kāi)軟件,進(jìn)入選擇器

2.選中MCU

3.LED引腳配置

4.UART輸出配置

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

5.使能FreeRTOS

pIYBAF4Wi0CACBrxAAE_dtnw9x8184.jpg

6.配置FreeRTOS任務(wù)

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

o4YBAF4Wi0CAByImAAFn0mGRRPo972.jpg

提示:針對(duì)初學(xué)者,使用STM32CubeMX配置FreeRTOS時(shí),大部分參數(shù)默認(rèn)即可。

當(dāng)你熟悉之后,可以進(jìn)一步掌握每項(xiàng)參數(shù)。

7.配置時(shí)鐘

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

pIYBAF4Wi0GAQ9DjAAE2y1l0PVs936.jpg

8.工程管理配置

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

o4YBAF4Wi0GAfq06AAEIr5-HsRU587.jpg

9.生成并打開(kāi)工程

o4YBAF4Wi0KAH_MXAAEb0eCZLzY861.jpg

4源碼分析

4.1 在兩個(gè)任務(wù)中添加應(yīng)用程序

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

pIYBAF4Wi0KAI9cKAAF3qaT5IBQ430.jpg

4.2 說(shuō)明

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

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

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

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

4.3 編譯下載運(yùn)行

上面步驟完成之后,就可以編譯,然后直接下載運(yùn)行了,通過(guò)串口調(diào)試助手可以看見(jiàn)輸出字符“Demo...”。

5工程及源碼下載

為方便初學(xué)者,這里提供對(duì)應(yīng)工程和源碼,方便大家學(xué)習(xí)。

百度網(wǎng)盤(pán):

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

提取碼:7k5i

提示:公號(hào)不支持外部鏈接,請(qǐng)復(fù)制鏈接到瀏覽器打開(kāi)。

鏈接后期可能會(huì)失效,關(guān)注公眾號(hào)『strongerHuang』及時(shí)獲取動(dòng)態(tài)。


推薦閱讀:

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

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

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

    關(guān)注

    2264

    文章

    10854

    瀏覽量

    354293
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    483

    瀏覽量

    61915
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    freertos最多支持多少個(gè)任務(wù)

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

    stm32freertos如何進(jìn)入芯片的sleep模式?

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

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

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

    用的cube生成的freertos工程,串口和任務(wù)通過(guò)郵箱通訊,結(jié)果任務(wù)反應(yīng)很慢是怎么回事?

    初學(xué)freertos。用的cube生成的freertos工程,單片機(jī)型號(hào)位stm32f103vbt6。 建了三個(gè)人物,一個(gè)是串口任務(wù),一個(gè)是LED每秒翻轉(zhuǎn)一次,一個(gè)是空
    發(fā)表于 05-08 08:13

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

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

    FREERTOS建了兩個(gè)任務(wù),成功運(yùn)行了,但每次運(yùn)行2個(gè)小時(shí)左右就死機(jī)的原因?

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

    STM32F103VE運(yùn)行STM32CubeMX生成的freertos工程,FreeRTOS堆棧設(shè)置導(dǎo)致任務(wù)不執(zhí)行切換怎么解決?

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

    為什么CubeMX設(shè)計(jì)的FreeRTOS工程只能正常運(yùn)行3個(gè)任務(wù)?

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

    FreeRTOS里在中斷中掛起任務(wù)出錯(cuò)的原因?怎么解決?

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

    STM32CubeIDE+FreeRtos+LWIP初始化不通過(guò)怎么解決?

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

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

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

    FreeRTOS任務(wù)無(wú)故進(jìn)入掛起狀態(tài)的原因?

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

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

    stm32+FreeRTOS+LWIP實(shí)現(xiàn)tcp server,同樣的程序在keil下運(yùn)行正常,在stm32cubeide下,正常運(yùn)行不了幾
    發(fā)表于 04-03 06:48

    如何可視化FreeRTOS任務(wù)響應(yīng)時(shí)間

    高效的開(kāi)發(fā)基于FreeRTOS的固件需要理解任務(wù)、中斷和內(nèi)核之間的交互以及時(shí)間序列。
    的頭像 發(fā)表于 12-22 11:12 ?1003次閱讀
    如何可視化<b class='flag-5'>FreeRTOS</b><b class='flag-5'>任務(wù)</b>響應(yīng)時(shí)間

    FreeRTOS中的任務(wù)管理

    任務(wù)FreeRTOS 中最基本的調(diào)度單元,它是一段可執(zhí)行的代碼,可以獨(dú)立運(yùn)行。FreeRTOS 中的任務(wù)是基于優(yōu)先級(jí)的搶占式調(diào)度,優(yōu)先級(jí)
    的頭像 發(fā)表于 11-27 17:03 ?922次閱讀