Renesas MCU之FreeRTOS的应用

目录

概述

[1 FSP配置FreeRTOS](#1 FSP配置FreeRTOS)

[1.1 软件版本信息](#1.1 软件版本信息)

[1.2 配置FreeRTOS](#1.2 配置FreeRTOS)

[2 FreeRTOS的Task](#2 FreeRTOS的Task)

[2.1 FSP下的项目结构](#2.1 FSP下的项目结构)

[2.2 Task代码](#2.2 Task代码)

[2.2.1 Task测试案例配置](#2.2.1 Task测试案例配置)

[2.2.2 测试代码实现](#2.2.2 测试代码实现)

[3 自定义Task](#3 自定义Task)

[3.1 编写代码](#3.1 编写代码)

[3.2 测试函数](#3.2 测试函数)

[4 测试](#4 测试)

[4.1 Task断点测试](#4.1 Task断点测试)

[4.2 板卡运行测试](#4.2 板卡运行测试)


概述

本文主要介绍在Renesas MCU中使用FreeRTOS,包括使用FSP配置FreeRTOS的方法,包括使用FSP创建Task,用户自定义task。还通过改变两个LED的状态来验证task的工作流程。

1 FSP配置FreeRTOS

1.1 软件版本信息

软硬件信息 版本信息
Renesas MCU R7FA4M2AD3C
Keil MDK ARM 5.38
FSP 版本 5.3.0
调试工具:st-link ST-LINK/V2-1

注意:

在Keil MDK中可以更改FSP的版本,方法如下

1.2 配置FreeRTOS

1)打开配置项目界面,选择FreeRTOS的版本和FSP的版本

配置完成后,进入到该页面,只能选择静态内存,完成基本配置项目。

2) 在Stacks面板上创建一个线程

在Thread面板上修改task的名称,使其符合工程的应用特性。

完成以上参数配置之后,就可以生成项目

2 FreeRTOS的Task

2.1 FSP下的项目结构

1)生成项目

点击Generate Project content,就能生成项目,在Console界面看见项目相关的信息

生成项目之后,就可以编译项目

2 )Task相关的代码

FSP配置项目之后,如果在FSP中配置了thread,会在Flex Software库文件中生成task相关的代码

2.2 Task代码

2.2.1 Task测试案例配置

在main_task_entry.c下的代码时FSP自动生成的,user可以在该task中添加和项目相关的代码,笔者以控制一个LED为例,验证Task的运行状态。

1)IO相关的配置,笔者的板卡上使用P405,P404,P002

2)FSP配置IO

2.2.2 测试代码实现

在main_task_entry中实现500ms控制LED1的状态翻转功能。

代码第2行: 引用LED相关配置的头文件

代码第12行:触发LED翻转

代码第13行:实现500ms延时

实例代码:

cpp 复制代码
#include "main_task.h"
#include "bsp_led.h"
/* Main Task entry function */
/* pvParameters contains TaskHandle_t */
void main_task_entry(void * pvParameters)
{
    FSP_PARAMETER_NOT_USED(pvParameters);

    /* TODO: add your own code here */
    while(1)
    {
        LED1_TOGGLE;
        vTaskDelay(500);
    }
}

3 自定义Task

3.1 编写代码

代码功能介绍:

1)定义task相关的栈,thread的object

2)定义Task执行函数

3)创建task函数

cpp 复制代码
 /*
 FILE NAME  :  user_task.c
 Description:  user task library 
 Author     :  tangmingfei2013@126.com
 Date       :  2024/06/03
 */
#include "user_task.h" 
#include "FreeRTOS.h"
#include "task.h"
#include "semphr.h"
#include "bsp_led.h"

static TaskHandle_t mainThread;
static StaticTask_t mainThread_memory;
#if defined(__ARMCC_VERSION)           /* AC6 compiler */
static uint8_t mainThread_stack[1024] BSP_PLACE_IN_SECTION(BSP_UNINIT_SECTION_PREFIX ".stack.thread") BSP_ALIGN_VARIABLE(BSP_STACK_ALIGNMENT);
#else
static uint8_t mainThread_stack[1024] BSP_PLACE_IN_SECTION(BSP_UNINIT_SECTION_PREFIX ".stack.mainThread") BSP_ALIGN_VARIABLE(BSP_STACK_ALIGNMENT);
#endif

static const rm_freertos_port_parameters_t userThread_parameters =
{
    .p_context = (void *) NULL,
};


static void userThread_func(void * pvParameters)
{
    FSP_PARAMETER_NOT_USED(pvParameters);
    /* TODO: add your own code here */
    while(1)
    {
        vTaskDelay(200);
        LED2_TOGGLE;
    }
}

void user_createTask( void )
{
    mainThread = xTaskCreateStatic(
                                    userThread_func,
                                    (const char *)"user_createTask",
                                    1024/4,                           // In words, not bytes
                                    (void *) &userThread_parameters,  //pvParameters
                                    1,
                                    (StackType_t *)&mainThread_stack,
                                    (StaticTask_t *)&mainThread_memory);
}
 
 
/* End of this file */ 

3.2 测试函数

代码33行:延时200ms

代码34行:实现LED2状态翻转

4 测试

4.1 Task断点测试

在userThread_func中添加一个断点,快速运行程序,观察断点情况

4.2 板卡运行测试

下载代码到板卡中,快速运行代码,观察板卡上LED的运行情况

1)task触发led状态一

2)task触发led状态二

相关推荐
吠品13 小时前
智谱开源 ZCode 之后,真正的考试才开始
单片机·嵌入式硬件·1024程序员节
Chery114014 小时前
高速ADC与精密DAC怎么选?DP9230D与DP8532D应用解析
嵌入式硬件·物联网·射频工程
小李不想当小白17 小时前
SPI通信外设与W25Q64 (硬件SPI)(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
LCG米17 小时前
STM32驱动W5500以太网模块实测:TCP吞吐瓶颈定位、TX指针回绕陷阱与断线重连保活落地
stm32·单片机·嵌入式硬件·tcp/ip
尼喃19 小时前
662K/65Z5三脚稳压芯片规格书—PW6566B33/B30引脚功能
嵌入式硬件
创界工坊工作室19 小时前
63-基于STC89C52霍尔传感器的智能化电能表设计
stm32·单片机·嵌入式硬件·51单片机·proteus
智购科技自动售货机厂家20 小时前
让AI经营自动售货机:从Project Vend看工具权限与业务规则~YH
大数据·服务器·单片机·嵌入式硬件·深度学习
Zwawa21 小时前
从 printf 到曲线:把数据送上 VOFA+
c语言·单片机·嵌入式
意法半导体STM3221 小时前
【官方原创】LAT6048 如何扩大MP2的A35核和M33核共享内存
stm32·单片机·嵌入式硬件·内存映射·stm32mp2
en.en..1 天前
STM32(F429)启动模式与两种烧录方式
stm32·单片机·嵌入式硬件