楼主: kennan

如何借用MT函数来使用协议栈串口

[复制链接]
nich2010 发表于 2011-12-4 12:16:10 | 显示全部楼层
不错,谢谢分享
wsssshq@126.com 发表于 2011-12-8 13:01:43 | 显示全部楼层
受益匪浅 谢谢喽
真诚星君 发表于 2011-12-9 17:52:41 | 显示全部楼层
果断顶起。。前面一段时间去玩了下消失了。。现在重回ZIGBEE了。。呵呵
bamboolight 发表于 2012-3-10 16:37:08 | 显示全部楼层
学习一下,正在给SimpleApp添加接收串口数据的功能
qmlm8844 发表于 2012-3-10 23:38:40 | 显示全部楼层
{:soso_e179:}好贴啊,顶了。
hwulong 发表于 2012-3-22 20:20:26 | 显示全部楼层
真是好贴啊!顶了!做不出来的同学是不是把毛毛老师
/* Make sure it's correct */
        //if ((MT_UartCalcFCS ((uint8*)&pMsg->msg[0], MT_RPC_FRAME_HDR_SZ + LEN_Token) == FSC_Token))
        {
          osal_msg_send( App_TaskID, (byte *)pMsg );         }
        //else
        {
          /* deallocate the msg */
         ;// osal_msg_deallocate ( (uint8 *)pMsg );
        }
红色部分给注释掉了?!我刚开始就是看得不仔细,就是把这一句给注释掉了,做了1个多小时,调试了很久,还是做不出来,最后没办法了,只能回去一步一步地看附件中文档的说明,其实之前也有看过这份文档,不过可能当时看得不是很仔细吧,没留意到,这次回去看的时候,发现了这个问题,恢复了这一条语句,终于行了!呵呵~~
feibikaiqi 发表于 2012-3-29 15:34:33 | 显示全部楼层
毛毛老师关于 你的文档中说的改变波特率会有问题  具体是什么问题呢?能说说嘛?
healthren 发表于 2012-4-22 14:00:26 | 显示全部楼层
kenman老师,这个地方有个地方可能是错的
*pBuffer++ = *pMsg++;
需要改为pBuffer[i]=pMsg[i]
否则,你在pBuffer = osal_mem_alloc(datalength);仅仅开辟了datalength的memory,但实际上你的pBuffer多用了一个,这样会导致osal_mem_free 错误
ningbo 发表于 2012-5-18 22:15:58 | 显示全部楼层
加油,顶你呵呵
爽子 发表于 2012-5-21 17:07:32 | 显示全部楼层
老师你好,按照您的方法,我修改了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:}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表