JL690X(1)创建任务

杰理AC690X(1)创建任务

使用杰理690X系列时,依据实际需求可能需要创建自定义任务,下面根据本人的理解叙述如何创建自定义任务,文章如存在错误请各位批评指正,下面直接进入正题。
1.函数初始化
参考Main_Task初始化函数进行My_Task初始化,其中TaskMyPrio是宏定义的,杰理690X留给用户开发任务的优先级是2-10,如果不在此范围内可能影响其他任务的运行;MY_TASK_NAME和MY_TASK_STACK_SIZE自行参考Main_Task初始化进行定义。

 int my_task_init(void)
{
    u32 err;
    err = os_task_create_ext(MyTask,
                             (void*)0,
                             TaskMyPrio,
                             10
                             ,MY_TASK_NAME,
                             MY_TASK_STACK_SIZE
                            );
    return 0;
}

2.任务函数创建
在 my_task_init初始化时,我们函数名为MyTask,因此代码如下所示:

static void MyTask(void *p)
{
	int msg[6];
	while(1)
	{
		//memset(msg,0x00,sizeof(msg));
		//os_taskq_pend(0, ARRAY_SIZE(msg), msg);
		clear_wdt();
		printf("My Task\n");
	}
}

MyTask()中的注释部分为消息接收,若去掉注释需使用如下语句触发任务执行会执行一次。

os_taskq_post(MY_TASK_NAME,MSG)

在增加上述两个函数之后 ,其中my_task_init()参考main_task_init()在board.c中的board_main()中进行调用,代码如下所示:

main_task_init();
my_task_init();
OSStart();

3.工程文件添加
如果想在独立的.c文件中创建任务需要在工程代码中添加相应的文件及路径,下面大致介绍一几个重要步骤:
a.在下图中创建mytask文件夹存放.c文件,在include目录下创建mytask文件夹用于存放对应的.h文件;
在这里插入图片描述
b:在下图中分别右击apps_soundbox和include选择Add files secursively,在apps_soundbox添加.c文件对应的文件夹,在include添加.h文件对应的文件夹;
![Alt]
c:在CodeBlocks中右击工程名,选择Build Options,在Search directories中把.h对应的文件路径添加即可;
![Alt]
最后贴出mytask.h和mytask.c文件代码,如下所示:
mytask.h:

#ifndef	_MY_TASK_
#define	_MY_TASK_

extern int my_task_init(void);
#endif

mytask.c:

#include "sdk_cfg.h"
#include "includes.h"
#include "main_key.h"
#include "rtos/os_api.h"
#include "common/app_cfg.h"
#include "dev_manage/dev_ctl.h"
#include "file_operate/file_op_err.h"
#include "rtos/task_manage.h"
#include "usb_device.h"
#include "key_drv/key.h"
#include "common/flash_cfg.h"
#include "vm/vm_api.h"
#include "ui/ui_api.h"
#include "dac/dac_api.h"
#include "linein.h"
#include "sys_detect.h"
#include "bluetooth/avctp_user.h"
#include "key_drv/key_drv_io.h"
#include "ui/led/led.h"
#include "key_drv/key_voice.h"
#include "dac/dac.h"
#include "rtc/rtc_api.h"
#include "update.h"
#include "clock.h"
#include "irq_api.h"
#include "rcsp/rcsp_interface.h"
#include "key_drv/key_drv_ad.h"
#include "mytask.h"

static void MyTask(void *p)
{
	int msg[6];
	while(1)
	{
		memset(msg,0x00,sizeof(msg));
		os_taskq_pend(0, ARRAY_SIZE(msg), msg);
		clear_wdt();
		printf("My Task\n");
	}
}
int my_task_init(void)
{
    u32 err;
    err = os_task_create_ext(MyTask,
                             (void*)0,
                             TaskMyPrio,
                             10
                             ,MY_TASK_NAME,
                             MY_TASK_STACK_SIZE
                            );
    return 0;
}

4.结束
推荐一个学习JL690X的学习博客690X学习,首次尝试写点东西出来供大家学习参考,如存在错误和不适当之处望大家批评指正,谢谢。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值