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

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

ZTOOL_P1
MT_TASK

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

ZStack-CC2530-2.5.1a 串口使用笔记(一)_第1张图片

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

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


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

ZStack-CC2530-2.5.1a 串口使用笔记(一)_第2张图片

此时进行编译!结果报错了,根据错误提示,认为与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();

.......

ZStack-CC2530-2.5.1a 串口使用笔记(一)_第3张图片


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

你可能感兴趣的:(CC2530,单片机开发,IAR,开发环境,cc2530,IAR,Z-stack,嵌入式软件)