我是靠谱客的博主 贤惠帽子,最近开发中收集的这篇文章主要介绍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, "Hin", 3);
    
    // Send the periodic message
    AutoResetTV_SendPeriodicMessage();

.......



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

最后

以上就是贤惠帽子为你收集整理的ZStack-CC2530-2.5.1a 串口使用笔记(一)的全部内容,希望文章能够帮你解决ZStack-CC2530-2.5.1a 串口使用笔记(一)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部