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

第27章_瑞薩MCU零基礎(chǔ)入門(mén)系列教程之freeRTOS實(shí)驗(yàn)

這篇具有很好參考價(jià)值的文章主要介紹了第27章_瑞薩MCU零基礎(chǔ)入門(mén)系列教程之freeRTOS實(shí)驗(yàn)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

本教程基于韋東山百問(wèn)網(wǎng)出的 DShanMCU-RA6M5開(kāi)發(fā)板 進(jìn)行編寫(xiě),需要的同學(xué)可以在這里獲取: https://item.taobao.com/item.htm?id=728461040949

配套資料獲?。篽ttps://renesas-docs.100ask.net

瑞薩MCU零基礎(chǔ)入門(mén)系列教程匯總: https://blog.csdn.net/qq_35181236/article/details/132779862


第27章 freeRTOS實(shí)驗(yàn)

本章目標(biāo)

  • 學(xué)會(huì)使用RASC創(chuàng)建一個(gè)基于freertos的工程;
  • 學(xué)會(huì)使用RASC創(chuàng)建freertos任務(wù),體驗(yàn)RTOS的多任務(wù)調(diào)度;

27.1 創(chuàng)建基于FreeRTOS的工程

使用RASC工具創(chuàng)建基于freertos的MDK工程非常的簡(jiǎn)單快捷,在前文創(chuàng)建MDK工程《3.5.1 使用RASC創(chuàng)建MDK工程》的最后一步那里,在“RTOS Selection”中選“FreeRTOS(v10.4.6+fsp.4.3.0)”即可,如下圖所示:

第27章_瑞薩MCU零基礎(chǔ)入門(mén)系列教程之freeRTOS實(shí)驗(yàn),瑞薩MCU基礎(chǔ)入門(mén)教程,單片機(jī),嵌入式硬件,嵌入式,瑞薩,瑞薩MCU,freeRTOS

接下來(lái)會(huì)默認(rèn)勾選“FreeRTOS-Minimal-Static Allocation”:

第27章_瑞薩MCU零基礎(chǔ)入門(mén)系列教程之freeRTOS實(shí)驗(yàn),瑞薩MCU基礎(chǔ)入門(mén)教程,單片機(jī),嵌入式硬件,嵌入式,瑞薩,瑞薩MCU,freeRTOS

到這一步后直接點(diǎn)擊下方的“Finish”即可創(chuàng)建一個(gè)帶有FreeRTOS的RA6M5 MDK工程了。

27.2 FreeRTOS初體驗(yàn)

27.2.1 新建線程

在RASC中新建線程非常簡(jiǎn)單,在其配置界面的“Stacks”中右側(cè)界面的“Threads”處點(diǎn)擊“New Thread”,即可新建一個(gè)FreeRTOS的線程,也就是任務(wù),如下圖所示:

第27章_瑞薩MCU零基礎(chǔ)入門(mén)系列教程之freeRTOS實(shí)驗(yàn),瑞薩MCU基礎(chǔ)入門(mén)教程,單片機(jī),嵌入式硬件,嵌入式,瑞薩,瑞薩MCU,freeRTOS

上圖中已經(jīng)添加了兩個(gè)線程“l(fā)og_thread”和“l(fā)ed_thread”。

27.2.2 添加堆分配算法模塊

添加完線程之后還需要添加堆分配算法,F(xiàn)reeRTOS支持5種堆算法:heap1~heap5。本實(shí)驗(yàn)選擇的是heap4,首先選中任意一個(gè)FreeRTOS線程,比如“l(fā)ed_thread”,然后點(diǎn)擊配置界面的“New
Stack”,找到“RTOS”后選擇要使用的算法即可,如下圖所示:

第27章_瑞薩MCU零基礎(chǔ)入門(mén)系列教程之freeRTOS實(shí)驗(yàn),瑞薩MCU基礎(chǔ)入門(mén)教程,單片機(jī),嵌入式硬件,嵌入式,瑞薩,瑞薩MCU,freeRTOS

FreeRTOS中,只能選擇一種堆算法。雖然上圖里是在“l(fā)ed_thread”中為它選擇了某個(gè)堆算法,但是這個(gè)堆算法不是“屬于”某個(gè)線程,而是屬于整個(gè)FreeRTOS的。你不能在另一線程里選擇另一種堆算法。

27.2.3 配置FreeRTOS通用參數(shù)

要使用FreeRTOS,需要配置內(nèi)核相關(guān)的許多參數(shù),比如時(shí)鐘基準(zhǔn),時(shí)鐘頻率,任務(wù)棧大小,分配內(nèi)存時(shí)使用靜態(tài)分配還是動(dòng)態(tài)分配等等,這些參數(shù)在FSP種點(diǎn)擊任意一個(gè)FreeRTOS線程即可看到關(guān)于內(nèi)核的通用參數(shù)配置,然后根據(jù)自己的實(shí)際需求進(jìn)行設(shè)置:

  1. Common-General

在此處設(shè)置RTOS內(nèi)核運(yùn)行的時(shí)鐘頻率、任務(wù)最大優(yōu)先級(jí)等參數(shù),如下圖所示:

第27章_瑞薩MCU零基礎(chǔ)入門(mén)系列教程之freeRTOS實(shí)驗(yàn),瑞薩MCU基礎(chǔ)入門(mén)教程,單片機(jī),嵌入式硬件,嵌入式,瑞薩,瑞薩MCU,freeRTOS

  1. Common-Memory Allocation

在此處設(shè)置內(nèi)存分配相關(guān)的參數(shù),比如是否支持靜態(tài)內(nèi)存分配、堆的大小,如下圖所示:

第27章_瑞薩MCU零基礎(chǔ)入門(mén)系列教程之freeRTOS實(shí)驗(yàn),瑞薩MCU基礎(chǔ)入門(mén)教程,單片機(jī),嵌入式硬件,嵌入式,瑞薩,瑞薩MCU,freeRTOS

  1. 其它通用參數(shù)

還有很多參數(shù),比如是否支持任務(wù)通知、互斥量等等,F(xiàn)reeRTOS是一個(gè)可以高度定制的內(nèi)核,要想弄清楚這些參數(shù),需要對(duì)它比較熟悉。

27.2.4 配置線程參數(shù)

對(duì)于某個(gè)線程,需要設(shè)置它的名稱(chēng)、棧大小、優(yōu)先級(jí)等參數(shù),如下圖所示:

第27章_瑞薩MCU零基礎(chǔ)入門(mén)系列教程之freeRTOS實(shí)驗(yàn),瑞薩MCU基礎(chǔ)入門(mén)教程,單片機(jī),嵌入式硬件,嵌入式,瑞薩,瑞薩MCU,freeRTOS

27.2.5 驅(qū)動(dòng)程序

本實(shí)驗(yàn)使用的是串口和LED的驅(qū)動(dòng)程序,請(qǐng)讀者自行移植。

27.2.6 線程程序

  1. LED線程

在LED的線程入口函數(shù)中,本實(shí)驗(yàn)先對(duì)LED設(shè)備進(jìn)行初始化,然后每隔300ms改變一次LED的狀態(tài)以實(shí)現(xiàn)閃爍效果,代碼如下:

#include "led_thread.h"
#include "drv_gpio.h"
#include "hal_data.h"
/* LedThread entry function */
/* pvParameters contains TaskHandle_t */
void led_thread_entry(void * pvParameters)
{
    FSP_PARAMETER_NOT_USED(pvParameters);

    /* TODO: add your own code here */
    struct IODev *pLedDev = IOGetDecvice("UserLed");
    if(NULL != pLedDev)
        pLedDev->Init(pLedDev);
    bool state = false;
    while(1)
    {
        pLedDev->Write(pLedDev, state);
        state = !state;
        vTaskDelay(300);
    }
}

需要注意的是這里使用的是RTOS內(nèi)核的延時(shí)函數(shù),它讓當(dāng)前線程進(jìn)入阻塞狀態(tài),讓出處理器資源。

  1. 串口打印線程

在串口打印線程的入口函數(shù)中,首先初始化了串口,然后每隔100ms計(jì)數(shù)一次并打印出來(lái),代碼如下:

#include "log_thread.h"
#include "drv_uart.h"
#include "hal_data.h"
#include <stdio.h>
/* LogThread entry function */
/* pvParameters contains TaskHandle_t */
void log_thread_entry(void * pvParameters)
{
    FSP_PARAMETER_NOT_USED(pvParameters);

    /* TODO: add your own code here */
    
    UARTDrvInit();
    
    uint32_t count = 0;
    while(1)
    {
        printf("\r\nLog: %d\r\n", count++);
        vTaskDelay(100);
    }
}

27.2.7 FreeRTOS啟動(dòng)分析

FreeRTOS的啟動(dòng)過(guò)程,看main函數(shù)即可。創(chuàng)建2個(gè)線程后,啟動(dòng)調(diào)度器。代碼如下:

int main(void)
{
    g_fsp_common_thread_count = 0;
    g_fsp_common_initialized = false;

    /* Create semaphore to make sure common init is done before threads start running. */
    g_fsp_common_initialized_semaphore =
    #if configSUPPORT_STATIC_ALLOCATION
    xSemaphoreCreateCountingStatic(
    #else
    xSemaphoreCreateCounting(
    #endif
        256,
        1
        #if configSUPPORT_STATIC_ALLOCATION
        , &g_fsp_common_initialized_semaphore_memory
        #endif
    );

    if (NULL == g_fsp_common_initialized_semaphore) {
        rtos_startup_err_callback(g_fsp_common_initialized_semaphore, 0);
    }

    /* Init RTOS tasks. */
    led_thread_create();
    log_thread_create();

    /* Start the scheduler. */
    vTaskStartScheduler();
    return 0;
}
  • 第07~22行:創(chuàng)建了一個(gè)計(jì)數(shù)型信號(hào)量;
  • 第25~26行:創(chuàng)建線程;
  • 第29行:開(kāi)啟FreeRTOS的調(diào)度器,如果開(kāi)啟成功則不會(huì)走到30行的“return 0”;

對(duì)于RASC創(chuàng)建的FreeRTOS工程,它不會(huì)調(diào)用hal_entry()函數(shù)。

27.2.8 測(cè)試結(jié)果

將編譯出來(lái)的二進(jìn)制可執(zhí)行文件燒錄到板子上運(yùn)行,可以觀察到LED在閃爍,而且串口在打印如下圖這樣的信息:

第27章_瑞薩MCU零基礎(chǔ)入門(mén)系列教程之freeRTOS實(shí)驗(yàn),瑞薩MCU基礎(chǔ)入門(mén)教程,單片機(jī),嵌入式硬件,嵌入式,瑞薩,瑞薩MCU,freeRTOS文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-708981.html


本章完

到了這里,關(guān)于第27章_瑞薩MCU零基礎(chǔ)入門(mén)系列教程之freeRTOS實(shí)驗(yàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 第10章_瑞薩MCU零基礎(chǔ)入門(mén)系列教程之中斷控制單元簡(jiǎn)介

    第10章_瑞薩MCU零基礎(chǔ)入門(mén)系列教程之中斷控制單元簡(jiǎn)介

    本教程基于韋東山百問(wèn)網(wǎng)出的 DShanMCU-RA6M5開(kāi)發(fā)板 進(jìn)行編寫(xiě),需要的同學(xué)可以在這里獲?。?https://item.taobao.com/item.htm?id=728461040949 配套資料獲取:https://renesas-docs.100ask.net 瑞薩MCU零基礎(chǔ)入門(mén)系列教程匯總 : https://blog.csdn.net/qq_35181236/article/details/132779862 本書(shū)使用的RA處理器R7FAM5系

    2024年02月09日
    瀏覽(30)
  • 第6章_瑞薩MCU零基礎(chǔ)入門(mén)系列教程之串行通信接口(SCI)

    第6章_瑞薩MCU零基礎(chǔ)入門(mén)系列教程之串行通信接口(SCI)

    本教程基于韋東山百問(wèn)網(wǎng)出的 DShanMCU-RA6M5開(kāi)發(fā)板 進(jìn)行編寫(xiě),需要的同學(xué)可以在這里獲取: https://item.taobao.com/item.htm?id=728461040949 配套資料獲?。篽ttps://renesas-docs.100ask.net 瑞薩MCU零基礎(chǔ)入門(mén)系列教程匯總 : https://blog.csdn.net/qq_35181236/article/details/132779862 本章目標(biāo) 了解串行通信協(xié)

    2024年01月24日
    瀏覽(32)
  • 第3章_瑞薩MCU零基礎(chǔ)入門(mén)系列教程之開(kāi)發(fā)環(huán)境搭建與體驗(yàn)

    第3章_瑞薩MCU零基礎(chǔ)入門(mén)系列教程之開(kāi)發(fā)環(huán)境搭建與體驗(yàn)

    本教程基于韋東山百問(wèn)網(wǎng)出的 DShanMCU-RA6M5開(kāi)發(fā)板 進(jìn)行編寫(xiě),需要的同學(xué)可以在這里獲?。?https://item.taobao.com/item.htm?id=728461040949 配套資料獲取:https://renesas-docs.100ask.net 瑞薩MCU零基礎(chǔ)入門(mén)系列教程匯總 : https://blog.csdn.net/qq_35181236/article/details/132779862 本章目標(biāo): 搭建 Renesas 的

    2024年02月09日
    瀏覽(26)
  • 第28章_瑞薩MCU零基礎(chǔ)入門(mén)系列教程之基于面向?qū)ο蟮墓こ探Y(jié)構(gòu)

    第28章_瑞薩MCU零基礎(chǔ)入門(mén)系列教程之基于面向?qū)ο蟮墓こ探Y(jié)構(gòu)

    本教程基于韋東山百問(wèn)網(wǎng)出的 DShanMCU-RA6M5開(kāi)發(fā)板 進(jìn)行編寫(xiě),需要的同學(xué)可以在這里獲取: https://item.taobao.com/item.htm?id=728461040949 配套資料獲?。篽ttps://renesas-docs.100ask.net 瑞薩MCU零基礎(chǔ)入門(mén)系列教程匯總 : https://blog.csdn.net/qq_35181236/article/details/132779862 在前面的章節(jié)里,講解了瑞

    2024年02月09日
    瀏覽(34)
  • 第21章_瑞薩MCU零基礎(chǔ)入門(mén)系列教程之事件鏈接控制器ELC

    第21章_瑞薩MCU零基礎(chǔ)入門(mén)系列教程之事件鏈接控制器ELC

    本教程基于韋東山百問(wèn)網(wǎng)出的 DShanMCU-RA6M5開(kāi)發(fā)板 進(jìn)行編寫(xiě),需要的同學(xué)可以在這里獲?。?https://item.taobao.com/item.htm?id=728461040949 配套資料獲?。篽ttps://renesas-docs.100ask.net 瑞薩MCU零基礎(chǔ)入門(mén)系列教程匯總 : https://blog.csdn.net/qq_35181236/article/details/132779862 本章目標(biāo) 了解ELC基本概念

    2024年02月08日
    瀏覽(35)
  • 第1章_瑞薩MCU零基礎(chǔ)入門(mén)系列教程之單片機(jī)程序的設(shè)計(jì)模式

    第1章_瑞薩MCU零基礎(chǔ)入門(mén)系列教程之單片機(jī)程序的設(shè)計(jì)模式

    本教程基于韋東山百問(wèn)網(wǎng)出的 DShanMCU-RA6M5開(kāi)發(fā)板 進(jìn)行編寫(xiě),需要的同學(xué)可以在這里獲?。?https://item.taobao.com/item.htm?id=728461040949 配套資料獲?。篽ttps://renesas-docs.100ask.net 瑞薩MCU零基礎(chǔ)入門(mén)系列教程匯總 : https://blog.csdn.net/qq_35181236/article/details/132779862 本章目標(biāo) 理解裸機(jī)程序設(shè)

    2024年02月09日
    瀏覽(20)
  • 第26章_瑞薩MCU零基礎(chǔ)入門(mén)系列教程之獨(dú)立看門(mén)狗定時(shí)器-IWDT

    第26章_瑞薩MCU零基礎(chǔ)入門(mén)系列教程之獨(dú)立看門(mén)狗定時(shí)器-IWDT

    本教程基于韋東山百問(wèn)網(wǎng)出的 DShanMCU-RA6M5開(kāi)發(fā)板 進(jìn)行編寫(xiě),需要的同學(xué)可以在這里獲?。?https://item.taobao.com/item.htm?id=728461040949 配套資料獲?。篽ttps://renesas-docs.100ask.net 瑞薩MCU零基礎(chǔ)入門(mén)系列教程匯總 : https://blog.csdn.net/qq_35181236/article/details/132779862 本章目標(biāo) 了解A6M5處理器的

    2024年02月08日
    瀏覽(50)
  • 瑞薩MCU入門(mén)教程(非常詳細(xì)的瑞薩單片機(jī)入門(mén)教程)

    瑞薩MCU入門(mén)教程(非常詳細(xì)的瑞薩單片機(jī)入門(mén)教程)

    得益于瑞薩強(qiáng)大的MCU、強(qiáng)大的軟件開(kāi)發(fā)工具(e2 studio),也得益于瑞薩和RA生態(tài)工作室提供的支持,我們團(tuán)隊(duì)編寫(xiě)了《ARM嵌入式系統(tǒng)中面向?qū)ο蟮哪K編程方法》,全書(shū)37章,將近500頁(yè): 講解面向?qū)ο缶幊淘趩纹瑱C(jī)開(kāi)發(fā)中的使用 結(jié)合FSP軟件包實(shí)例分析外設(shè)驅(qū)動(dòng) 講解如何使用RASC配

    2024年02月08日
    瀏覽(48)
  • FreeRTOS學(xué)習(xí)之路,以STM32F103C8T6為實(shí)驗(yàn)MCU(序章——淺談單片機(jī)以及FreeRTOS)

    FreeRTOS學(xué)習(xí)之路,以STM32F103C8T6為實(shí)驗(yàn)MCU(序章——淺談單片機(jī)以及FreeRTOS)

    學(xué)習(xí)之路主要為FreeRTOS操作系統(tǒng)在STM32F103(STM32F103C8T6)上的運(yùn)用,采用的是標(biāo)準(zhǔn)庫(kù)編程的方式,使用的IDE為KEIL5。 注意?。?!本學(xué)習(xí)之路可以通過(guò)購(gòu)買(mǎi)STM32最小系統(tǒng)板以及部分配件的方式進(jìn)行學(xué)習(xí),也可以通過(guò)Proteus仿真的方式進(jìn)行學(xué)習(xí)。 后續(xù)文章會(huì)同時(shí)發(fā)表在個(gè)人博客(jaso

    2024年02月06日
    瀏覽(17)
  • 【瑞薩MCU】開(kāi)發(fā)環(huán)境搭建之 e2 studio

    【瑞薩MCU】開(kāi)發(fā)環(huán)境搭建之 e2 studio

    e2 studio(簡(jiǎn)稱(chēng)為 e2 或 e2s)是瑞薩電子的一款包含代碼開(kāi)發(fā)、構(gòu)建和調(diào)試的開(kāi)發(fā)工具。e2 studio 基于開(kāi)源 Eclipse IDE 和與之相關(guān)的 C/C++ 開(kāi)發(fā)工具(CDT)。e2 studio 托管了瑞薩的 FSP 靈活配置軟件包,這是一個(gè)用于支持瑞薩 MCU 開(kāi)發(fā)的固件庫(kù)。通過(guò)使用 FSP 庫(kù),我們可以輕松配置和管

    2024年02月16日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包