工具/软件:TI-RTOS
您好!
我将 LAUNCHXL-CC2650 v1.1与 CCS v6.2搭配使用。
我打开了 uartecho.c 示例并尝试操作 UART 驱动程序、但我有一个问题、我不知道何时在回调模式下使用它。 我在文档中看到调用 UART_READ 函数时,就像这样:
UART_READ (UART、TAB、1);
我应该在收到的每个 char 上都有回调、但我没有回调、在收到了大量 char (几个 dizaines)后我有回调、在回调后我必须重置、应用程序崩溃。 在这里,我的代码是简单地根据 UART echo 示例进行调整的:
/*
=== uartecho.c ====
//
//* XDCtools 头文件*/
#include
#include
/* BIOS 头文件*/
#include
#include
/* TI-RTOS 头文件*/
#include
#include
/*示例/板头文件*/
#include "Board.h"
#include
#define TASKSTACKSIZE 768
Task_Structt task0Struct;
Char task0Stack[TASKSTACKSIZE];
// PIN_Config 表的全局存储器存储*/
static PIN_STATE ledPinState;
//
*应用 LED 引脚配置表:
*-所有 LED 板 LED 均关闭。
*/
PIN_Config ledPinTable[]={
BOARD_LED1 | PIN_GPIO_OUTP_EN | PIN_GPIO_LOW | PIN_PushPull | PIN_DRVSTR_MAX、
BOARD_LED2 | PIN_GPIO_OUTP_EN | PIN_GPIO_LOW | PIN_PushPull | PIN_DRVSTR_MAX、
PIN_Terminate
};
char tab[5];
UART_Handle UART;
UART_Params uartParams;
静态空 UART_ReadCallback (UART_Handle handle、void * rxBuf、size_t size)
{
UART_write (UART、"callback\n"r、10);
}
/*
== 回声 Fxn =====
*此函数的任务是静态创建的。 请参阅工程的.cfg 文件。
//
void echoFxn (UArg0、UArg0 arg1)
{
// char 输入;
const char echoPrompt[]="\fEchoing Characters:\r\n";
/*创建一个数据处理关闭的 UART。 *
UART_PARAMS_INIT (uartParams);
uartParams.writeDataMode = UART_DATA_BINARY;
uartParams.readDataMode = UART_DATA_BINARY;
uartParams.readMode = UART_MODE_CALLACK;
uartParams.readReturnMode = UART_return_full;
uartParams.readEcho = UART_ECHO_OFF;
uartParams.baudrate = 115200;
uartParams.readCallback=UART_ReadCallback;
UART = UART_OPEN (Board_UART0、uartParams);
if (UART == NULL){
System_abort ("打开 UART 时出错");
}
UART_WRITE (UART、echoPrompt、sizeof (echoPrompt));
/*循环永久回显*/
while (1){
// UART_Read (UART、INPUT、1);
UART_READ (UART、TAB、1);
// UART_WRITE (UART、INPUT、1);
}
}
/*
=== main ====
*/
int main (void)
{
pin_handle ledPinHandle;
Task_Params taskParams;
/*呼叫板初始化函数*/
Board_initGeneral();
Board_initUART();
/*构造 BIOS 对象*/
Task_Params_init (&taskParams);
taskParams.STACKSIZE = TASKSTACKSIZE;
taskParams.stack =_task0Stack;
Task_construct(&task0Struct,(Task_FuncPtr) echoFxn、&taskParams、NULL);
/*打开 LED 引脚*/
ledPinHandle = PIN_OPEN (&ledPinState、ledPinTable);
if (!ledPinHandle){
System_abort ("初始化板 LED 引脚时出错");
}
PIN_setOutputValue (ledPinHandle、Board_LED1、1);
/*此示例启用了日志记录和许多其他调试功能*/
system_printf ("此示例不会尝试将代码或数据最小化"
"封装\n");
system_flush();
System_printf ("启动 UART 回显示例\n 系统提供程序设置为"
"SysMin。 停止目标以查看"
"ROV.\n");
/* SysMin 仅在您调用 flush 或 exit 时才会打印到控制台*/
system_flush();
/*启动 BIOS */
BIOS_start();
返回(0);
}
我的回调函数错过了什么?
此致、
John