9936|11

10

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

写串口通信程序,第一反应是采用中断+队列方式。 [复制链接]

然后再考虑能不能裁减、替换、简化。

学会了这些基本原理,做ARM、PC什么的驱动程序都简单了。
要牢记:这是基本设计原理。
此帖出自单片机论坛

最新回复

关键还是精准。 特别是使用C语言,到底中间额外的时间跑了多少,软件定时,你根本不清楚,除非去看反汇编的代码。 用汇编的话(我是说单纯定时这一项的话)。 还是用定时器精准,方便。虽然我经常一行一行数着它到底具体跑了多少个机器周期。 但估计真正做活没人会那么干。  详情 回复 发表于 2010-6-7 09:19
点赞 关注
 

回复
举报

1

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

回复 楼主 的帖子

以前也写过串口,总想用简单的printf或查询等待的方式,总无法想明白指针和数组的用法,有机会一定补补
此帖出自单片机论坛
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

回复 沙发 的帖子

不懂计算时间啥事都干不成,首先得会计算时间
得先保证接收的数据不发生溢出掉失。
此帖出自单片机论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

4
 

回复 板凳 的帖子

在陈明计的书上有介绍,是刚开始的几页书的一个例子<嵌入式实时操作系统SMALL RTOS 原理及应用>
此帖出自单片机论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

5
 

回复 4楼 的帖子

我的串口就是这种方式,不过速率低,4800,数据多,120个字节,所以分成了几组,保证每组数据不要超过通讯量,在增加一个协议。
此帖出自单片机论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

6
 

回复 5楼 的帖子

采用fifo方式,有效地设计接收缓冲区的长度,一般来说,可以解决接收数据溢出的问题,

除非主处理程序对缓冲区的数据处理太慢。
此帖出自单片机论坛
 
 
 

回复

161

帖子

0

TA的资源

五彩晶圆(初级)

7
 

回复 6楼 的帖子

俺对一下
“写延时函数,第一反应是采用定时器,用结构体管理”,采用定时器延时,优点只有用的人才知道,利用Nop循环来延时,太浪费了,而且有多个定时器任务要求同时启动,分时到达时,不用定时器几乎无法实现。
此帖出自单片机论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

8
 

回复 7楼 的帖子

请教所长个问题
加入我的发送缓存是 20个字节
然后刚开始的程序不断的 printf向UART送数据
用FIFO将数据压入这20个字节的缓冲区
如果连续执行大量的 printf 函数的话(加入我需要送200个字节的数据)
这个缓冲一下子就满了。那么这个时候应该怎么做呢?
显然将数据压进去队列的时间比UART发送的时间短很多。
是不是应该停下来等待队列有空位的时候再插入数据?
如果是操作系统的话应该切换任务吗?
加大缓冲区是个解决办法,但是用的不多,浪费RAM(动态分配?)

请指教指教。
此帖出自单片机论坛
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(中级)

9
 

回复 8楼 的帖子

单任务(或只多任务中只一个任务)发送数据,可以先检查队列状况,用状态任务号进行状态之间的延时处理,分解发送。

多任务发送的时候,必定加大缓冲区。都多任务了,怎么可能一个任务中死占着串口不放?


switch( task )
{
   case....
}
就能办得到,而且支持多任务运行。
此帖出自单片机论坛
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(中级)

10
 

回复 9楼 的帖子

常见BOOTLOADER,原DOS下也这样,使用环境条件是一个最典型的单任务,这时候爱用查询就用查询。

采用中断+队列,可以支持多任务,几乎所有驱动都是这样做的。产品中更应该这样做。
此帖出自单片机论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

11
 


以为自己上路了,原来是岔路了
此帖出自单片机论坛
 
 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

12
 

回复 7楼 kandy2059 的帖子

关键还是精准。
特别是使用C语言,到底中间额外的时间跑了多少,软件定时,你根本不清楚,除非去看反汇编的代码。
用汇编的话(我是说单纯定时这一项的话)。
还是用定时器精准,方便。虽然我经常一行一行数着它到底具体跑了多少个机器周期。
但估计真正做活没人会那么干。
此帖出自单片机论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表