微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > CC1310的TI 15.4协议栈中collector例程的如何加入自己建的任务呢?

CC1310的TI 15.4协议栈中collector例程的如何加入自己建的任务呢?

时间:12-23 整理:3721RD 点击:

在该协议上自己建的任务优先级该怎么安排,自己建的一个任务总是调度不过去,想问一下TI的工程师,该怎么建人物不和原有的任务不影响,并调度过去,我在main.c文件中Void taskFxn(UArg a0, UArg a1)的函数里加入了红色的一段代码,

/* Start tasks of external images */
ICall_createRemoteTasks();

/* Initialize the application */
Collector_init();

// add by zmx
UartTask_init();

/* Kick off application - Forever loop */
while(1)
{
Collector_process();
// System_printf("Collector_process");
// System_printf("\r\n");
UART_write(hUart,"Collector_process",21);
UART_write(hUart,"\r\n",4);
Task_sleep(1000/Clock_tickPeriod); // unit 10us
}

加入UartTask_init();是我建得初始化任务

加入Task_sleep(1000/Clock_tickPeriod);后还是调度不到我建的任务;我建得任务代码如下;

/*
* UartTask.c
*
* Created on: 2017年10月8日
* Author: Administrator
*/

/***** Includes *****/
#include "UartTask.h"
#include "uart_printf.h"
#include "mqtt.h"
#include "iouart.h"

/* XDCtools Header files */
//#include <xdc/std.h>
#include <xdc/cfg/global.h>
#include <xdc/runtime/System.h>

/* BIOS Header files */
#include <ti/sysbios/BIOS.h>
#include <ti/sysbios/knl/Task.h>
#include <ti/sysbios/knl/Semaphore.h>
#include <ti/sysbios/knl/Event.h>
#include <ti/sysbios/knl/Clock.h>

/* TI-RTOS Header files */
#include <ti/drivers/PIN.h>
#include <ti/drivers/UART.h>

/* Example/Board Header files */
#include "Board.h"
#include <time.h>
#include <ti/sysbios/hal/Seconds.h>

/******************************************************************************
Global Variables
*****************************************************************************/
UART_Params uart0Params;

/***** Defines *****/
#define UART_TASK_STACK_SIZE 128 // 申请内存大小
#define UART_TASK_PRIORITY 58 // 任务优先级,系统最低优先级0xE0

/***** Variable declarations *****/
static Task_Params uartTaskParams;
Task_Struct uartTask; /* not static so you can see in ROV */
static uint8_t uartTaskStack[UART_TASK_STACK_SIZE];

/***** Prototypes *****/
static void uartTaskFunction(UArg arg0, UArg arg1);

void UartTask_init(void)
{

/* Create a UART with data processing off. */
// UART_init();
// UART_Params_init(&uart0Params);
// uart0Params.baudRate = 115200;
// uart0Params.dataLength = UART_LEN_8; // 数据长度
// uart0Params.stopBits = UART_STOP_ONE; // 停止位
// uart0Params.readDataMode = UART_DATA_BINARY; // 直接读取,不识别结尾换行符
// uart0Params.writeDataMode = UART_DATA_BINARY; // 直接发送,不识别结尾换行符
//// uartParams.readMode = UART_MODE_CALLBACK; // 读取数据使用回掉方式
//// uartParams.writeMode = UART_MODE_CALLBACK;
//// uartParams.readCallback = Uart_ReadCallback; //
//// uartParams.writeCallback = Uart_WriteCallback; //
// uart0Params.readEcho = UART_ECHO_OFF;
// uart0Params.readReturnMode = UART_RETURN_FULL; //立即返回,不识别新行数据
// UartPrintf_init(UART_open(Board_UART0, &uart0Params));

// System_printf("UART_init zmx");
// System_printf("\r\n");
UART_write(hUart,"UART_init zmx",13);
UART_write(hUart,"\r\n",4);
/* Create event used internally for state changes */
// Event_Params eventParam;
// Event_Params_init(&eventParam);
// Event_construct(&uartEvent, &eventParam);
// uartEventHandle = Event_handle(&uartEvent);

/* Create the task */
Task_Params_init(&uartTaskParams);
uartTaskParams.stackSize = UART_TASK_STACK_SIZE;
uartTaskParams.priority = UART_TASK_PRIORITY;
uartTaskParams.stack = &uartTaskStack;
Task_construct(&uartTask, uartTaskFunction, &uartTaskParams, NULL);

}

static void uartTaskFunction(UArg arg0, UArg arg1)
{
static char meassage[200];
int rc;
/* Loop forever echoing */
while (1)
{
// memset(meassage,0,sizeof(meassage));
// //订阅消息
// rc = mqtt_subscrib("pyboard_led",meassage);
// io_printf("rc = %d\n\r",rc);
// if(rc >= 0)
// {
// printf("meassage = %s\n\r",meassage);
// }
// //将数据发送出去
// mqtt_publish("pyboard_value",meassage);
UART_write(hUart,"UART_TASK zmx",13);
UART_write(hUart,"\r\n",4);
Task_sleep( (1000/Clock_tickPeriod)); // We want to sleep for 1 second,unit 10us
// System_printf("UART_TASK zmx");
// System_printf("\r\n");

}
}

还有一个问题是,我的这个任务测试发现只能把优先级调到58以后串口才能正常打印,

还请TI的工程师帮忙看一下,谢谢

15.4的历程可以在往上加任务吗,我准备加一个了,不知道可以不。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top