老师你好,按照您的方法,我修改了genericapp工程的以下部分:
1.在void GenericApp_Init( byte task_id )函数尾添加:
MT_UartInit();
MT_UartRegisterTaskID( GenericApp_TaskID );
2.在 GenericApp_ProcessEvent的switch中添加事件:
case CMD_SERIAL_MSG:
ProcessUartData((mtOSALSerialData_t *)MSGpkt);
HalLedSet( HAL_LED_1,HAL_LED_MODE_FLASH);
break;
3.也在程序下面添加了void ProcessUartData(mtOSALSerialData_t* MSGpkt)函数
4.在MT_UART.C中注释掉校验部分。
串口助手发送数据FE 05 01 02 03 04 05 06 07 00(和老师发的一样)
现象:
1.并无返回信息,而其他节点发来的数据可以在串口助手上显示。
2.板子上串口接收数据的LED亮了一下,说明有数据进入。
3.将 HalLedSet( HAL_LED_1,HAL_LED_MODE_TOGGLE);函数加入
case CMD_SERIAL_MSG: 之后,串口接收LED闪,LED1不闪,
说明串口接收成功的事件未触发。
4.将 HalLedSet( HAL_LED_1,HAL_LED_MODE_TOGGLE);函数添加入
MT_UART.C中 MT_UartProcessZToolData 函数,LED1闪,
而加入MT_UartProcessZAppData,LED1不闪, 说明进入
MT_UartProcessZToolData 函数,有接收数据的反应。
5.将 HalLedSet( HAL_LED_1,HAL_LED_MODE_TOGGLE);函数分别
添加入各个case 后,发现仅添加入SOP_STATE后有灯闪的情况,
其他各case包括default均未进入。
那这就是说整个接收在验证
case SOP_STATE://有运行
if (ch == MT_UART_SOF)
state = LEN_STATE;
break;
就没有下文了,而MT_UART.C 中
#define SOP_STATE 0x00
这是说明state一直都是0x00?state = LEN_STATE;这句语句没有生效?
或者串口接收每次都是仅收到了一位数据?或者每次只收一位数据后
Hal_UART_RxBufLen(port)就变为0了?跳出了这个循环?
这里应该如何解决,不知道老师有没有遇到这样的问题?{:soso_e132:}
(如果有新的进展和问题,我就在下面更新){:soso_e100:}
|