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

在使用 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文件开头(*^__^*)

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值