首页 > 行业资讯 > 正文

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

10.1 创建FreeRTOS项目

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

如何创建FreeRTOS项目-freertos开发环境

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

如何创建FreeRTOS项目-freertos开发环境1

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

如何创建FreeRTOS项目-freertos开发环境2

项目模板选择 Bare Metal -Minimal

如何创建FreeRTOS项目-freertos开发环境3

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

如何创建FreeRTOS项目-freertos开发环境4

10.2 配置Led和串口硬件

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

如何创建FreeRTOS项目-freertos开发环境5

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

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

如何创建FreeRTOS项目-freertos开发环境6

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

如何创建FreeRTOS项目-freertos开发环境7

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

如何创建FreeRTOS项目-freertos开发环境8

10.3 FreeRTOS添加线程

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

如何创建FreeRTOS项目-freertos开发环境9

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打印如下信息。

如何创建FreeRTOS项目-freertos开发环境10

猜你喜欢