打印

写串口通信程序,第一反应是采用中断+队列方式。

[复制链接]
9200|35
手机看帖
扫描二维码
随时随地手机跟帖
沙发
sz_kd| | 2008-5-13 15:17 | 只看该作者

路过听课

使用特权

评论回复
板凳
ayb_ice| | 2008-5-13 15:32 | 只看该作者

我正认真听着。。。

使用特权

评论回复
地板
ch2003_23| | 2008-5-13 15:33 | 只看该作者

学习

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

使用特权

评论回复
5
宇宙飞船| | 2008-5-13 15:41 | 只看该作者

不懂计算时间啥事都干不成,首先得会计算时间。

得先保证接收的数据不发生溢出掉失。

使用特权

评论回复
6
| | 2008-5-13 15:56 | 只看该作者

从串口看编程...呵呵...

使用特权

评论回复
7
lhj200304| | 2008-5-13 17:21 | 只看该作者

是哦

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

使用特权

评论回复
8
rainmans| | 2008-5-13 17:58 | 只看该作者

坐下来听课

使用特权

评论回复
9
machunshui| | 2008-5-13 18:14 | 只看该作者

有啥讲头?

本来就该如此吗!
有啥讲头?

使用特权

评论回复
10
hotpower| | 2008-5-13 18:28 | 只看该作者

赞成所长中断+队列~~~

使用特权

评论回复
11
dai_weis| | 2008-5-13 20:56 | 只看该作者

支持中断+队列

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

使用特权

评论回复
12
hotpower| | 2008-5-13 21:08 | 只看该作者

飞船说的也很有道理

使用特权

评论回复
13
fsaok| | 2008-5-14 08:22 | 只看该作者

中断+队列是最标准的做法

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

除非主处理程序对缓冲区的数据处理太慢。

使用特权

评论回复
14
icecut| | 2008-5-14 08:53 | 只看该作者

中断发送,中断接收+fifo

使用特权

评论回复
15
hotpower| | 2008-5-15 12:23 | 只看该作者

鉴定12楼马甲的干活

使用特权

评论回复
16
古道热肠| | 2008-5-15 12:52 | 只看该作者

哈哈,好呀,又讲课了

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

使用特权

评论回复
17
etual| | 2008-5-15 12:57 | 只看该作者

请教所长个问题

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

请指教指教。

使用特权

评论回复
18
农民讲习所|  楼主 | 2008-5-15 13:05 | 只看该作者

这样思考比较合适

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

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


switch( task )
{
   case....
}
就能办得到,而且支持多任务运行。

使用特权

评论回复
19
农民讲习所|  楼主 | 2008-5-15 13:11 | 只看该作者

LS的说的是控制台操作模式

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

采用中断+队列,可以支持多任务,几乎所有驱动都是这样做的。产品中更应该这样做。

使用特权

评论回复
20
Swd21ic| | 2008-5-15 21:48 | 只看该作者

re

中断+队列

我用的中断+数组.好原始阿..

还没有领会队列的精髓.所长传授哇

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

1275

帖子

15

粉丝