工具/软件:TI-RTOS
您好!
我正在使用 GP EVMAM572x
PDK: pdk_am57xx_1_0_5
RTOS: processor_sdk_rtos_am57xx_3_02_00_05
我将 UART3配置为在回调模式或中断模式下读取数据、因此我在 NIMU 基本示例项目中进行了修改。
1.按如下方式初始化 UARTa
空初始化 UART_3()
{
int32_t addrScanPrompt;//、byterd;
//char HeadingMark_1、prv_HeadingMark_1;
//UART_Handle UART =空;
UART_Params uartParams;
/* UART SoC 初始化配置*/
UART_HwAttrs UART_cfg;
//semaphoreP_Params semParams;
UART_INIT();
/********* UART_IN_Callback();******* /
/*创建回叫信标*/
/*UART_osalSemParamsInit(&semParams);
semParams.mode = SemaphoreP_Mode_binary;
callbackSem = UART_osalCreateBlockingLock (0、&semParams);*/
/*获取默认的 UART 初始化配置*/
UART_socGetInitCfg (UART_instance、&UART_cfg);
UART_cfg.edmaHandle =空;
UART_cfg.dmaMode = false;
UART_cfg.loopback = false;
UART_socSetInitCfg (UART_instance、&UART_cfg);
/*为读取设置回调模式*/
UART_PARAMS_INIT (uartParams);
uartParams.baudrate = 76800;
uartParams.parityType= UART_PAR_even;
uartParams.readCallback = UART_callback;
uartParams.readMode = UART_MODE_CALLACK;
uartParams.readDataMode = UART_DATA_BINARY;
uartParams.readReturnMode = UART_return_full;
/*uartParams.writeCallback =空;
uartParams.writeMode = UART_MODE_CALLBACK;*/
UART = UART_OPEN (UART_Instance、&uartParams);
如果(UART == NULL)
{
//转到 Err;
}
/************* /
Task_sleep (100);
addrScanPrompt=(int32_t) scanPrompt;
if (UART_READ (UART、(void *) addrScanPrompt、input_length)==UART_ERROR)
{
//goto Err;
}
Task_sleep (100);
}
2.写入回调函数
void UART_callback (UART_Handle handle、void *buf、size_t count)
{
A_cnt=a_Cnt+count;
NextSerialData=1;
}
3.调用任务 while 循环中的读取函数
void read_a_cnt ()
{
if (NextSerialData)
{
NextSerialData=0;
/*UART_putNum_Anjana (a_cnt);
UART_WRITE (UART、&scanPrompt、5);//Task_sleep (100);*/
//semaphore_pend (callbackSem、BIOS_wait_forever);
//memset (scanPrompt、0、sizeof (scanPrompt));
addrScanPrompt_1=(int32_t) scanPrompt;
UART_READ (UART、(void *) addrScanPrompt_1、input_length);
//uart_osalPendLock (callbackSem、SemaphoreP_WAIT_FOREVER);
if (a_cnt <=500)
{A_cnt =0;}
}
}
但在一段时间后、执行会挂起。 我无法识别问题。 请帮助我识别。 UART3默认用作调试端口、这是否是 UART3的问题?
谢谢、
Anjana Pathak