吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(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)那部分朋友入門。

1寫在前面

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

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

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

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

2準(zhǔn)備工作

主要有三類:

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

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

2.2 STM32CubeMX (含軟件包)

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

官方下載地址:

www.st.com/stm32cubemx

具體安裝,使用方法可以參看我之前整理的專欄文章:【專欄】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è)工具,開發(fā)STM32變得更加快捷。

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

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

2.選中MCU

3.LED引腳配置

4.UART輸出配置

這里配置成異步模式之后,引腳自動(dòng)配置(我的開發(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ī)配置,可參看我教程:【專欄】STM32CubeMX系列教程

o4YBAF4Wi0GAfq06AAEIr5-HsRU587.jpg

9.生成并打開工程

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)盤:

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

提取碼:7k5i

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

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


推薦閱讀:

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)注

    2272

    文章

    10924

    瀏覽量

    357579
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    484

    瀏覽量

    62397
收藏 人收藏

    評(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 ?1183次閱讀

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

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

    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

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

    在IAR中將freertos移植到STM32中,在進(jìn)行任務(wù)堆棧分配時(shí)分配多大的堆棧時(shí)一個(gè)問(wèn)題,如何比較方便的獲得任務(wù)堆棧呢?利用IAR這個(gè)平臺(tái)的在線調(diào)試可以嗎?怎么看,請(qǐng)各位大神各抒己
    發(fā)表于 05-07 08:15

    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。在一開始調(diào)試的時(shí)候,使能FreeRTOS和LWIP。結(jié)果就是LWIP會(huì)自動(dòng)創(chuàng)建一個(gè)任務(wù)。一開始在配置界面,把這些內(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
    百家乐官网现场网络| 怎样玩百家乐官网看路| 金莎娱乐| 大发888金皇冠娱乐城| 百家乐小路是怎么画的| 噢门百家乐玩法| 百家乐高手qq| 百家乐官网什么方法容易赢| 网络百家乐官网路子玩| 哪个百家乐官网投注平台信誉好| 精英百家乐官网现金网| 专业百家乐官网分析| 牛牛现金棋牌| 明升国际网址| 优博线上娱乐| 鸿发| 永利| 皇冠网hg8333.com| 棋牌类游戏| 亿酷棋牌世界 完整版官方免费下载| 大发888娱乐城888 bg| 大发888游戏平台黄埔网| 榆次百家乐的玩法技巧和规则| 网上百家乐是假还是真的| 乐中百家乐的玩法技巧和规则| 大三元百家乐的玩法技巧和规则| 狮威百家乐娱乐平台| 百家乐真人游戏棋牌| 致胜百家乐的玩法技巧和规则 | 香港百家乐玩法| 百家乐娱乐场真人娱乐场| 网上百家乐赌博出| 多伦多百家乐的玩法技巧和规则| 888百家乐的玩法技巧和规则| 澳门百家乐游戏玩法| 老虎机技巧| 大发888主页| 大发888中文下载| 棋牌中心| 皇冠网小说推荐| 成武县|