立创梁山派--使用MDK-RTE一键添加FreeRTOS组件,包会!

立创梁山派–使用MDK-RTE一键添加FreeRTOS组件,包会!

准备工作

你需要一个从拿来官方的工程模板,就直接选择一个串口打印的就ok
在这里插入图片描述

接下来打开这个工程模板,按照如下图所示操作即可
在这里插入图片描述

在这里插入图片描述

如果你选择的芯片是gd32f470,在这里是用不了这个组件的,因为他缺少一个启动文件。就像下面这张图,他只有405\407\450。
在这里插入图片描述
点击ok
在这里插入图片描述

然后你就会看见,这个freertos,添加到我们这个工程里面进来了
在这里插入图片描述
由于他这里面多了一个启动文件
在这里插入图片描述
**会报错,所以你可以原来工程自带的启动文件删除掉,或者不让他参与编译,如下图所示在这里插入图片描述
还有两个报错,不慌
在这里插入图片描述
freertos自带的函数和我们的中断文件里面的函数冲突了,屏蔽掉即可

在这里插入图片描述
这三个错误是因为FreeRTOSConfig.h文件里面开启里一些我们暂时不需要用到的功能,我们给他关闭掉就行了
在这里插入图片描述

如图所示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
不过,还有一点小坑,我也不知道为啥,这个是官方的bug还是怎么样,在FreeRTOSConfig.h文件里面这个systickHandler函数的宏定义,他搞反了

所以我们应该把他反过来,如图所示
在这里插入图片描述
还有最后一步
在这里插入图片描述

如图
在这里插入图片描述
最后,我们来添加freertos的简单示例代码

mian.c的内容如下

#include "main.h"
#include "FreeRTOS.h"
#include "FreeRTOSConfig.h"
#include "bsp_led.h"
#include "bsp_usart.h"
#include "gd32f4xx.h"
#include "sys.h"
#include "systick.h"
#include "task.h"
#include 

void renwu1(void *pvParameters);
void renwu2(void *pvParameters);
/************************************************
函数名称 : main
功    能 : 主函数
参    数 : 无
返 回 值 : 无
作    者 : LC
*************************************************/
int main(void)
{
    systick_config();          // 滴答定时器初始化
    led_gpio_config();         // led初始化
    usart_gpio_config(115200); // 串口0初始化
    printf("start\n");
    xTaskCreate(renwu1, "renwu1", configMINIMAL_STACK_SIZE, NULL, 1, NULL);
    xTaskCreate(renwu2, "renwu1", configMINIMAL_STACK_SIZE, NULL, 2, NULL);
    vTaskStartScheduler();
    while (1)
    {
        printf("寄咯!又出bug咯\n");
    }
}

void renwu1(void *pvParameters)
{
    while (1)
    {
        // 任务代码
        printf("任务1\n");
        vTaskDelay(200); // 延迟1秒
    }
}
void renwu2(void *pvParameters)
{
    while (1)
    {
        // 任务代码
        printf("任务2\n");
        vTaskDelay(200); // 延迟1秒
    }
}

ok,运行效果如下,因为任务2的优先级比任务一的高,所以先打印任务2,再打印任务1

在这里插入图片描述
相关的开源代码链接在此:gitee
如果对你有所帮助的话,请给我点个star吧,嘿嘿;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值