在該章節(jié)中,我們將介紹如何創(chuàng)建FreeRTOS項(xiàng)目,并創(chuàng)建兩個線程:一個線程將讓Led每隔600ms閃爍一次,另外一個線程則讓串口每隔1.5s輸出一個打印。
10.1 創(chuàng)建FreeRTOS項(xiàng)目
在e2studio上點(diǎn)擊 File -> C/C++ Project 創(chuàng)建 Renesas RA C/C++ Project 。 接下來設(shè)置我們的項(xiàng)目名為 MyBoard 。

在接下來的配置中,我們定制開發(fā)我們的開發(fā)板,Board選擇“Custom User Board (Any Device) ”,Device選擇"R7FA6M4AF3CFB",以及燒錄調(diào)試器的類型。下一步我們就選擇 Flat (Non-TrustZone) Project 。

接下來的操作系統(tǒng)類型,選擇 FreeRTOS (v10.4.6+fsp.4.1.0) 。

項(xiàng)目模板選擇 Bare Metal -Minimal

接下來,創(chuàng)建好的項(xiàng)目如下圖所示。

10.2 配置Led和串口硬件
接下來我們打開項(xiàng)目中的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 中定義;
然后再配置使能外部晶振,并重新生成代碼。

接下來我們打開項(xiàng)目中的FSP配置文件,配置使能相應(yīng)串口的Pin功能,并重新生成代碼。

接下來我們選擇 Stacks , 點(diǎn)擊 "New Stack" -> "Connectivity" -> "UART(r_sci_uart)" 添加串口通信功能協(xié)議棧,并使用其默認(rèn)配置即可。

10.3 FreeRTOS添加線程
如下圖所示,單擊窗格頂部的 “New Thread” 按鈕,添加兩個線程分別命名為 thread_led 和 thread_uart ,其它的保持默認(rèn)配置即可,并重新生成代碼。

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 編譯運(yùn)行FreeRTOS
接下來編譯項(xiàng)目源碼并運(yùn)行,這時候?qū)创粋€線程將讓藍(lán)色Led每隔600ms閃爍一次,另外一個線程則讓串口每隔1.5s打印如下信息。

-
led
+關(guān)注
關(guān)注
243文章
24595瀏覽量
690821 -
源碼
+關(guān)注
關(guān)注
8文章
685瀏覽量
31317 -
FreeRTOS
+關(guān)注
關(guān)注
14文章
499瀏覽量
66934
發(fā)布評論請先 登錄
【freeRTOS開發(fā)筆記】關(guān)注創(chuàng)建任務(wù)時傳入優(yōu)先級數(shù)值問題
FreeRTOS創(chuàng)建消息隊(duì)列問題如何解決
如何使用Visual Studio Code進(jìn)行FreeRTOS開發(fā)
STM32CUBE的freertos的任務(wù)創(chuàng)建
FreeRTOS的任務(wù)創(chuàng)建過程
FreeRTOS創(chuàng)建任務(wù)的流程分享
如何為S32K311或S32K310創(chuàng)建一個freertos演示?
FreeRTOS任務(wù)如何創(chuàng)建和刪除?
FreeRTOS筆記(四):任務(wù)創(chuàng)建/刪除,掛起/解掛詳解
#FreeRTOS學(xué)習(xí)筆記(二):任務(wù)創(chuàng)建/刪除,掛起/解掛
FreeRTOS高級篇2---FreeRTOS任務(wù)創(chuàng)建分析
FreeRTOS系列第10篇---FreeRTOS任務(wù)創(chuàng)建和刪除
RA FreeRTOS任務(wù)創(chuàng)建
RA FreeRTOS任務(wù)創(chuàng)建
如何創(chuàng)建FreeRTOS項(xiàng)目
評論