【XR806开发板试用】FreeRTOS创建任务测试
2024-01-02 13:55:11
这篇来学习下,XR806开发板在FreeRTOS系统下创建两个任务测试,由于没有找到学习的文档,试着参考例程来测试。
一、复制工程
上篇测试了hello_demo的测试例程,直接复制这个工程文件,在此基础上修改
root@ubuntu:/home/xr806_sdk/project/demo# cp -r hello_demo/ task_demo/
复制完成后,文件如下:
修改 /demo/task_demo/gcc目录下的defconfig文件
root@ubuntu:/home/xr806_sdk/project/demo/task_demo/gcc# vi defconfig
二、代码
2.1、main.c
#include "common/framework/platform_init.h"
#include <stdio.h>
#include "kernel/os/os.h"
#include "task.h"
int main(void)
{
platform_init();
task_init();
return 0;
}
2.2、task.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "kernel/os/os.h"
#define START_THREAD_STACK_SIZE (512)
#define THREAD_STACK1_SIZE (512)
#define THREAD_STACK2_SIZE (512)
static OS_Thread_t start_task_thread;
static OS_Thread_t task1_thread;
static OS_Thread_t task2_thread;
static void task1(void *arg)
{
while (1)
{
printf("task1 running....\n");
OS_MSleep(100);
}
}
static void task2(void *arg)
{
while (1)
{
printf("task2 running....\n");
OS_MSleep(200);
}
}
static void start_task(void *arg)
{
//create task1
if (OS_ThreadCreate(&task1_thread,
"task1",
task1,
NULL,
OS_THREAD_PRIO_APP,
THREAD_STACK1_SIZE) != OS_OK) {
printf("thread create task1 error\n");
}
//create task2
if (OS_ThreadCreate(&task2_thread,
"task2",
task2,
NULL,
OS_THREAD_PRIO_APP,
THREAD_STACK2_SIZE) != OS_OK) {
printf("thread create task2 error\n");
}
OS_ThreadDelete(&start_task_thread);
}
int task_init(void)
{
if (OS_ThreadCreate(&start_task_thread,
"start_task",
start_task,
NULL,
OS_THREAD_PRIO_APP,
START_THREAD_STACK_SIZE) != OS_OK) {
printf("thread create error\n");
return -1;
}
return 0;
}
三、程序运行
编译完成后,下载镜像到开发板。
复位开发板运行后,串口输出:
文章来源:https://blog.csdn.net/weixin_47569031/article/details/135337963
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!