ZStack-CC2530-2.5.1a 串口使用笔记(一)

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012730382/article/details/54584766

在使用 ZStack-CC2530-2.5.1a  协议栈时,协议栈默认使用了串口;在IAR工程配置预处理器设置里有几个宏与使用串口有关:

ZTOOL_P1
MT_TASK

根据这两个宏,编译代码后,协议栈启动过程中会通过UART输出一些信息!

当我的应用程序不希望在zigbee协议栈启动过程中输出这些信息,即禁用启动过程中的UART输出。但是当协议栈完全启动完成后,

又要使用串口。实现这么一个需求,通过简单的几个步骤就可以了!


步骤一:之前提到在IAR工程配置里的那两个宏与UART的使用有关,现在我们将MT_TASK 修改为xMT_TASK。


此时进行编译!结果报错了,根据错误提示,认为与LCD文件的编译相关,我不关心LCD的使用,所以直接屏蔽掉

将LCD_SUPPORTED=DEBUG 改成 xLCD_SUPPORTED=DEBUG;再次编译就没有毛病了!


至此,我们已经屏蔽掉了Z-stack协议栈启动过程中的UART输出。

接下来就是要在协议栈启动后,输出我们自己想要的东西;这个也很方便就能实现。


步骤二:通过UART发送我们自己的数据,根据自己的应用,在任务初始化函数中添加串口初始化;

void AutoResetTV_Init( uint8 task_id )
{
  AutoResetTV_TaskID = task_id;
  AutoResetTV_NwkState = DEV_INIT;
  AutoResetTV_TransID = 0;


  MT_UartInit ();//初始化串口



步骤三:在完成步骤二后,接下来就是在应用中添加发送函数了。

uint16 AutoResetTV_ProcessEvent( uint8 task_id, uint16 events )
{
  afIncomingMSGPacket_t *MSGpkt;
  (void)task_id;  // Intentionally unreferenced parameter

  if ( events & SYS_EVENT_MSG )
  {

.......

// Send a message out - This event is generated by a timer
  //  (setup in AutoResetTV_Init()).
  if ( events & AutoResetTV_SEND_PERIODIC_MSG_EVT )
  {
    //周期串口数据
    HalUARTWrite (MT_UART_DEFAULT_PORT, "Hi\n", 3);
    
    // Send the periodic message
    AutoResetTV_SendPeriodicMessage();

.......



完成上述几个步骤,就实现了启动Z-stack协议栈禁用UART输出,协议栈启动完成后使用UART输出我们希望的数据!(当然,别忘了将头文件添加到你的应用c文件开头(*^__^*)

展开阅读全文

没有更多推荐了,返回首页