原创 lanzhoo CC2530函数库:串口接口使用说明

2013-8-27 15:15 3175 13 14 分类: MCU/ 嵌入式 文集: CC2530函数库

注:函数库见前文。

接口定义文件:modUart.h

单片机应用中,经常需要通过串口与对端节点收发消息。

封装后的串口函数包括:
初始化:包括UART初始化接口modUartInit()和接收回调函数初始化接口modUartSetRxCallback();
发送:调用modUartSendPkt()函数发送消息;
接收:接收机制采用回调机制,当收到消息时,底层库函数会调用用户设置的回调函数;

初学者即使对回调机制和函数指针不了解也不要紧,以例程为模板,在回调函数里面编写自己的应用即可。

UART初始化接口

modUartInit():
两个输入参数,一个表示使用哪个串口(目前的实现只支持串口0),另一个表示波特率。
注:串口的其它配置都简化为缺省配置,应用无法修改。

接收回调函数初始化接口modUartSetRxCallback():
用户先定义自己的回调函数,然后将函数名称作为输入参数调用modUartSetRxCallback()。

发送消息:
参数1表示使用哪个串口(目前只支持串口0);
参数2表示发送的消息的长度(以字节为单位);
参数3为消息对应的字节数组的开始地址(指针);
返回值小于0表示发送失败;


收到消息的处理:
传入用户自定义消息处理函数的输入参数也是三个:
参数1表示使用哪个串口(目前只支持串口0);
参数2表示收到的消息的长度(以字节为单位);
参数3为消息对应的字节数组的开始地址(指针);

函数实现机制对应用使用的影响
目前的实现机制采用了发送缓冲区和接收缓冲区。当发送函数调用完成时,消息被送入发送缓冲区,不代表已经发送完毕。应用可在前面消息的发送过程中,继续发送消息,直到缓冲区满。
消息的发送和接收都以分组为单位。底层实现会对用户消息加header形成分组。分组header由3个字节组成,第1、2个字节为0x7e7e,是分组开始标记。第3个字节为用户消息的长度,因此用户消息的长度不能超过255。
对端发送的消息也要以0x7e7e开头,然后是长度,然后是应用数据。
底层收到完整的分组后,调用用户回调函数。调用是在UART接收中断处理函数中执行的,因此用户需要及时对消息进行保存,设置标志通知主程序进行处理,然后及时返回。不要在回调函数中进行复杂、耗时长、涉及中断处理等的操作。主程序进行处理时,不能依赖输入参数中的消息缓冲区,因为该缓冲区会被底层重用。
 

文章评论1条评论)

登录后参与讨论

用户377235 2013-1-25 14:52

版主好啊,关于CC2530的双串口该怎么设计呢
相关推荐阅读
用户138786 2015-03-16 18:38
WIFI模块(HED10W07SN)应用设计入门
WIFI模块(HED10W07SN)应用设计入门 以下系列帖子记录我学习WIFI模块(HED10W07SN)的过程和心得,以及为学生设计的入门指引。 ...
用户138786 2015-03-16 18:37
HED10W07SN串口应用设计
串口通信应用设计 HED10W07SN模块有两个串口。厂家提供的参考实现中,串口0用于管理:AT指令、EM_WIFI程序下载、Boot Loader程序下载(...
用户138786 2015-03-16 16:42
HED10W07SN基本I/O设计
基本I/O设计 芯片中没有与其它外设功能复用的GPIO引脚只有3个:GPIO11、GPIO12、GPIO13。 底层提供...
用户138786 2015-03-16 16:40
WIFI模块HED10W07SN开发环境
开发环境 选择联盛德微电子的HED10W07SN模块入手进行学习是带点偶然的。 拿WIFI模块和CC2530结合做网关是很早就想做的事,但WIFI模...
用户138786 2014-11-27 19:29
无线单片机入门导学(基于CC2530)
无线单片机(WSN/Zigbee)应用设计入门导学(基于CC2530) 我们学习无线单片机编程/应用设计是为了什么呢? 1、设计有用的应用...
用户138786 2014-11-27 19:24
web方式远程控制
web方式远程控制应用设计 这一类应用的特点是客户端通过浏览器(http协议)方式对无线单片机进行远程控制及数据采集。 ...
我要评论
1
13
关闭 站长推荐上一条 /2 下一条