0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何创建FreeRTOS项目

CHANBAEK 来源:凌云物联网实验室 作者:郭工 2022-12-19 09:23 次阅读

在该章节中,我们将介绍如何创建FreeRTOS项目,并创建两个线程:一个线程将让Led每隔600ms闪烁一次,另外一个线程则让串口每隔1.5s输出一个打印。

10.1 创建FreeRTOS项目

在e2studio上点击 File -> C/C++ Project 创建 Renesas RA C/C++ Project 。 接下来设置我们的项目名为 MyBoard

图片

在接下来的配置中,我们定制开发我们的开发板,Board选择“Custom User Board (Any Device) ”,Device选择"R7FA6M4AF3CFB",以及烧录调试器的类型。下一步我们就选择 Flat (Non-TrustZone) Project

图片

接下来的操作系统类型,选择 FreeRTOS (v10.4.6+fsp.4.1.0)

图片

项目模板选择 Bare Metal -Minimal

图片

接下来,创建好的项目如下图所示。

图片

10.2 配置Led和串口硬件

接下来我们打开项目中的FSP配置文件,配置三个Led灯的引脚为GPIO模式,并分别配置它们的别名为LedRed(P400)、LedGreen(P404)、LedBlue(P415)。

图片

  • 通过 Symbolic Name 字段可以修改该GPIO的名称为 LedRed,它将在IDE自动生成的文件 ra_cfg/fsp_cfg/bsp/bsp_pin_cfg.h 中定义;
  • 通过 Mode 字段可以修改GPIO口的工作模式,它们将在IDE自动生成的文件 ra_gen/pin_data.c 中定义;

然后再配置使能外部晶振,并重新生成代码。

图片

接下来我们打开项目中的FSP配置文件,配置使能相应串口的Pin功能,并重新生成代码。

图片

接下来我们选择 Stacks , 点击 "New Stack" -> "Connectivity" -> "UART(r_sci_uart)" 添加串口通信功能协议栈,并使用其默认配置即可。

图片

10.3 FreeRTOS添加线程

如下图所示,单击窗格顶部的 “New Thread 按钮,添加两个线程分别命名为 thread_led 和 thread_uart ,其它的保持默认配置即可,并重新生成代码。

图片

10.4 修改FreeRTOS源码

修改 src/thread_led_entry.c 源文件,代码如下。

#include "thread_led.h"

/* Led Thread entry function */
/* pvParameters contains TaskHandle_t */
void thread_led_entry(void *pvParameters)
{
    FSP_PARAMETER_NOT_USED (pvParameters);

    R_BSP_PinAccessEnable(); /* Enable access to the PFS registers. */

    /* TODO: add your own code here */
    while (1)
    {
        R_BSP_PinWrite(LedBlue, BSP_IO_LEVEL_HIGH);
        vTaskDelay (300);
        R_BSP_PinWrite(LedBlue, BSP_IO_LEVEL_LOW);
        vTaskDelay (300);
    }
}

修改 src/thread_uart_entry.c 源文件,代码如下。

#include "thread_uart.h"

#define HELLO_MSG  "FreeRTOS is running on EK-RA6M4 Board!
"

/* UART Thread entry function */
/* pvParameters contains TaskHandle_t */
void thread_uart_entry(void *pvParameters)
{
    FSP_PARAMETER_NOT_USED (pvParameters);

    R_SCI_UART_Open(&g_uart0_ctrl, &g_uart0_cfg);

    /* TODO: add your own code here */
    while (1)
    {
        R_SCI_UART_Write(&g_uart0_ctrl, (uint8_t *)HELLO_MSG, strlen(HELLO_MSG));
        vTaskDelay (1500);
    }
}

10.5 编译运行FreeRTOS

接下来编译项目源码并运行,这时候将会看待一个线程将让蓝色Led每隔600ms闪烁一次,另外一个线程则让串口每隔1.5s打印如下信息

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    242

    文章

    23252

    浏览量

    660545
  • 源码
    +关注

    关注

    8

    文章

    639

    浏览量

    29185
  • FreeRTOS
    +关注

    关注

    12

    文章

    484

    浏览量

    62136
收藏 人收藏

    评论

    相关推荐

    freeRTOS开发笔记】关注创建任务时传入优先级数值问题

    freeRTOS开发笔记】关注创建任务时传入的优先级数值问题
    的头像 发表于 07-11 09:13 2766次阅读
    【<b class='flag-5'>freeRTOS</b>开发笔记】关注<b class='flag-5'>创建</b>任务时传入优先级数值问题

    FreeRTOS介绍与基础任务创建

    本篇介绍FreeRTOS与基础任务创建
    的头像 发表于 09-26 09:00 2397次阅读
    <b class='flag-5'>FreeRTOS</b>介绍与基础任务<b class='flag-5'>创建</b>

    FreeRTOS创建消息队列问题如何解决

    刚开始学习FreeRTOS,用的是STM32F103RCT6,目前创建了三个任务,运行指示灯、按键、显示。其中显示任务里是暂时还没有具体的代码,按键任务准备使用队列传递按键值。现在的问题是这样
    发表于 07-19 08:03

    如何使用Visual Studio Code进行FreeRTOS开发

    Code作为FreeRTOS项目的开发环境,介绍需要安装的扩展功能,及环境配置的相关选项。如果你还没有使用过VS Code,可以访问VS Code网站(https
    发表于 02-23 16:58

    STM32CUBE的freertos的任务创建

    目录问题说明解决步骤验证方案总结问题说明STM32CUBE的freertos的任务创建十分简单方便,但却有一个麻烦:需要我们把要跑的任务具体代码都写进freertos.c的文件里面,对于在对应文件
    发表于 08-24 08:26

    FreeRTOS的任务创建过程

    FreeRTOS笔记(四):任务创建/删除,挂起/解挂详解在第二篇笔记中介绍了任务创建的API,并且简单使用了相关API,本文将详细介绍任务创建的过程。一、任务
    发表于 02-08 06:10

    FreeRTOS创建任务的流程分享

    从零入门 FreeRTOS 操作系统之创建任务启动方式在 main() 函数中将硬件和 RTOS 系统先初始化好,然后创建一个启动任务后就启动调度器,然后在启动任务里面创建各种应用任务
    发表于 02-11 06:59

    如何为S32K311或S32K310创建一个freertos演示?

    我已经安装了 freertos 包,如何为 S32K311 或 S32K310 创建一个 freertos 演示 我现在找不到 freertos
    发表于 04-25 07:44

    FreeRTOS任务如何创建和删除?

    FreeRTOS移植到Cortex-M3硬件平台的文章中,我们已经见过任务创建API,但那篇文章的重点在于如何移植FreeRTOS,本文将重点放在任务的创建和删除API函数上面。 任
    的头像 发表于 03-11 18:08 2924次阅读

    FreeRTOS笔记(四):任务创建/删除,挂起/解挂详解

    FreeRTOS笔记(四):任务创建/删除,挂起/解挂详解在第二篇笔记中介绍了任务创建的API,并且简单使用了相关API,本文将详细介绍任务创建的过程。一、任务
    发表于 12-04 19:36 15次下载
    <b class='flag-5'>FreeRTOS</b>笔记(四):任务<b class='flag-5'>创建</b>/删除,挂起/解挂详解

    #FreeRTOS学习笔记(二):任务创建/删除,挂起/解挂

    FreeRTOS学习笔记(二):任务创建/删除,挂起/解挂上篇文章介绍了任务相关的基础知识,本篇文章对FreeRTOS任务的使用,将会介绍任务创建、删除、挂起以及恢复的API。一、任务
    发表于 12-23 19:56 2次下载
    #<b class='flag-5'>FreeRTOS</b>学习笔记(二):任务<b class='flag-5'>创建</b>/删除,挂起/解挂

    FreeRTOS高级篇2---FreeRTOS任务创建分析

    FreeRTOS基础系列《FreeRTOS系列第10篇---FreeRTOS任务创建和删除》中介绍了任务创建API函数xTaskCreat
    发表于 01-26 17:42 23次下载
    <b class='flag-5'>FreeRTOS</b>高级篇2---<b class='flag-5'>FreeRTOS</b>任务<b class='flag-5'>创建</b>分析

    FreeRTOS系列第10篇---FreeRTOS任务创建和删除

    FreeRTOS移植到Cortex-M3硬件平台的文章中,我们已经见过任务创建API,但那篇文章的重点在于如何移植FreeRTOS,本文将重点放在任务的...
    发表于 01-26 17:56 13次下载
    <b class='flag-5'>FreeRTOS</b>系列第10篇---<b class='flag-5'>FreeRTOS</b>任务<b class='flag-5'>创建</b>和删除

    RA FreeRTOS任务创建

    ,开发环境e 2 studio完美支持FreeRTOS,无需额外手动移植。以下介绍如何用瑞萨e 2 studio创建RA系列MCU的FreeRTOS工程。 对于不熟悉瑞萨的FSP开发环境的工程师们,此文
    的头像 发表于 03-10 14:35 1291次阅读

    RA FreeRTOS任务创建

    ,开发环境e2 studio完美支持FreeRTOS,无需额外手动移植。以下介绍如何用瑞萨e2 studio创建RA系列MCU的FreeRTOS工程。
    的头像 发表于 07-12 10:00 689次阅读
    RA <b class='flag-5'>FreeRTOS</b>任务<b class='flag-5'>创建</b>