原创 基于ZigBee2006协议的串口收发程序解读

2009-7-14 11:23 1982 10 10 分类: 消费电子

已经很久没有发布自己编写的程序了,最近受群里朋友的邀请在做一个串口的小程序,呵呵,其实就是CC2430在06协议中的串口接收程序。今天我就简单的做了一个小小的实验:按键初始化串口后,从串口调试助手上向芯片发送数据(每次发送8位数据),调试助手上回显发出的数据。借着这个实验,我解读一下06协议中的串口的使用。先发一张成功后的截图给大家一点信心!!

首先我想说的是06协议和之前的04协议中串口程序的区别。在06协议里,由于OSAL的引入,所有的函数均是采用调用形式,也就是说,跳来跳去的程序要比之前多了很多。串口部分也不例外,之前我总结的串口的中断法现在在06协议中已经变成了回调函数形式。也就是说,一旦串口有数据传送的时候,OSAL会就自动的转到你自定义的回调函数,执行你自定义的操作。不过这个需要你提前进行设置,现在大家看一下我的设置(见下图)。

注意最下面的uartConfig.callBackFunc = testCB; 就是自定义的回调函数(系统默认NULL),而testCB就是我自定义的程序。不过需要提醒大家的是:这些函数需要自己放在之前系统的任务初始化函数(SampleApp_Init( uint8 task_id ))里(谢谢瞎蒙!!),由于我是按键进行串口初始化,所以我就把这部分程序放在按键程序里了。

现在我们来介绍第二步,就是更改串口的一下设置(如下图):

这一部分的代码在文件 hal_board_cfg.h中,大家可以改一下,没有什么好说的,就是一些串口的基本设置。最后就来看看我这个超级简单的串口回调函数吧:

void testCB (uint8 port,uint8 event)
{
uint8 temp[8];
HalUARTRead(HAL_UART_PORT_0,temp,8); //芯片通过串口读数据
HalUARTWrite(HAL_UART_PORT_0,temp, 8); //芯片通过串口向外写数据

}

不知道为什么?之前必须有一个声明,估计是我把它写在所有文件的最后的原因吧,好了,整个06里的串口回调就是这么的简单。最后谢谢群里的瞎蒙!!

 

本文是作者原创,程序摘自无线龙ZigBee06协议栈(ZStack-1.4.3),转载必须保证文章的完整性并标明出处,请尊重作者(阿元),支持原创。

更多资料与技术讨论请联系:

上海无线龙通讯科技有限公司

联系人:司文铠

QQ876692208

MSN:siwenkai@hotmail.com

TEL13816689475

email:wxlsiwenkai@yahoo.com.cn

skype:sparksi01

公司网址:www.wxlsoc.com

 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
10
关闭 站长推荐上一条 /3 下一条