打印

请教ucos读取tl16c554串口问题

[复制链接]
1541|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
longzhaocy|  楼主 | 2012-4-25 10:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 longzhaocy 于 2012-4-25 13:57 编辑

我现在板子上有一个stm32f103,它控制两块tl16c554,每个tl16c554扩展了4个串口,每个串口下挂载32个从设备,从
设备往串口发数据。stm32f103通过数据总线去读写tl16c554数据,现在要保证stm32f103能读到每个串口下每台从设备
数据,我应该怎么设计这个ucos系统?
我现在想这样设计的,开8个任务,每个任务控制一个串口,每个任务依次去读串口下每台从设备。我的疑问是:
1、那每次任务给单独一台从设备发读命令,中间要延时一下。这个延时是用ucos里的OSTimeDly,进行任务切换呢?还是
只是单单的用while(i)i--延时下,接着读数据?
2、如果是在1问题下,用while(i)i--,读完一台设备后就用OSTimeDly,进行休眠和任务切换,还是读完所有32台设备后
,再用OSTimeDly,进行任务切换。
3、如果是在1问题下,用OSTimeDly,那这8个任务应该怎么设计?
4、或者哪位有经验,有更好的设计方案,请指点下。

相关帖子

沙发
madcool| | 2012-4-29 16:25 | 只看该作者
描述太含糊了,不过不建议开8个线程,建议开辟一个线程负责处理收发,根据你的描述,你的外部是半双工的链接方式,所以需要对每个串口维护一个状态机,在线程中轮训所有设备,通过进程间通信方式将数据扔给处理线程处理,另外while(1)不建议使用,根据你的方案,如果使用while的话,不让cpu阻塞会很严重

使用特权

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

本版积分规则

0

主题

8

帖子

0

粉丝