- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
通信方案软件设计
通信方案设计
1
1
11 环形队列串口通信方式的回顾
1.1
1.1
11..11 接口函数简单的介绍
在 前 面 《 串 口 设 备 驱 动 接 口 》 一 章 中 (
/bbs/bbs_content.jsp?bbs_sn=4516795bbs_page_no=1bbs_id=3020 ),
介绍了环形队列动态发送接收数据的好处,同时介绍了内存分配的相关内容,但
是有些朋友,特别是初学者可以会比较晕,主要是不知道怎么用,以及为什么要
这样设计,下文就是一些应用,我会提供很多典型微控制器的应用案例与工程源
代码。但是希望朋友们知道怎么用了以后还是返回原文看看,知道原理以后,稍
加修改,就可以使用到很多通讯接口和通信芯片上。
IIC SPI CAN
笔者也是发大宏愿,希望能在 、 、 中广泛使用这种通信方案,
呵呵, 借用乔布斯的一句名言:我们来到这个世界是为了改变世界的,不然的
话,我们为什么来到这里!
然而,现实总是残酷地,经过无数打击以后,我们接受了这个现状,自顶向
下的腐败、社会的全面溃败、高通胀、高房价、没有出路,我们的未来昏暗而渺
茫,至少,我们有共同的爱好,也许在这里我们才能找到一些心灵上的慰藉。
1.1.1demo工程包内的文件
我们先打开Demo 文件夹,在这个文件夹里存放着源文件,所有的代码都在
这里。
(1) OSQMem.c:内存分配的相关函数文件
(2) OSQMem.h:内存分配的配置头文件,这个文件非常重要,里面的参数
直接设置运行必不可少的参数:
#define OS_MEM_MAX 8 //最多允许的内存块管理区
#define OS_MEM_USART1_MAX 1024 //发送缓冲区的内存大小
#define OS_MEM_USART1_BLK 32 //每一个块的长度
其中OS_MEM_MAX 分配内存管理区的数量,前已述及,内存管理区内内
存块的大小是必须能够修改的,所以在这里预留了8个管理区,例程中只使用了
一个,主要是为以后升级方便。对于CAN 总线包而言,应该设置成8个(CAN
8 SPI 512
数据包最大为 个字节数据),而对于 存储设备而言,其实可以设置成
字节(Flash 每一页大约是占512字节), 而对于IIC 存储设备而言,有些每页
16字节,有些8字节不等。
这里只使用了一个管理区,不过就如例程中演示的,不同的应用程序申请同
一管理区的内存块是不会相互干扰的。
OS_MEM_USART1_MAX 指内存缓冲区的大小,这个数值取决于于应用程
1024 8 AVR
序需求,我这里设置的是 ,对于 位机的 而言,设置应该适度减小。
OS_MEM_USART1_BLK 指每一个块的长度,大小参考《串口设备驱动接
口 》一文。
(3) USART1.h USART1.c
: 的头文件,包含了其所有函数的预定义。
(4) USART1.c:里面有串口发送的所有函数,用户需要设置的参数有:
#defineUSART1_SEND_MAX_Q (OS_MEM_USART1_BLK-4) //发送内存块内的最大空间
#defineUSART1_SEND_MAX_BOX OS_MEM_USART1_MAX/OS_MEM_USART1_BLK
//发送内存块的最大数量
#defineUSART1_RECV_MAX_Q 32 //接收内存块内的最大空间
原创力文档


文档评论(0)