piaoyizu
请教一个关于串口中断收发的问题
请求大家个问题, 关于串口传输的. 以前用串口都是用轮循方式操作的. 现在需要用中断方式收发数据. 没有操作系统的。 在纯底层下
中断方式我是这样处理的:
1. 建立一个全局的buffer, 一个全局的计数.
2. 中断里收到的数据都存在这个buffer里, 如果满了就不接收.
3. 再往下要怎么设计了呢. 数据都收在buffer中去了, 可是我应用程序怎么知道呢. 我要串口一有数据传入, 我就做相应的处理的.
这方面经验久缺, 望有经验的大牛, 帮帮忙. 谢谢
[[i] 本帖最后由 piaoyizu 于 2008-6-29 17:11 编辑 [/i]]
zszyj
[quote]原帖由 [i]piaoyizu[/i] 于 2008-6-28 11:36 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8691128&ptid=1182727][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
请求大家个问题, 关于串口传输的. 以前用串口都是用轮循方式操作的. 现在需要用中断方式收发数据.
中断方式我是这样处理的:
1. 建立一个全局的buffer, 一个全局的计数.
2. 中断里收到的数据都存在这个bu ... [/quote]
什么操作系统下啊? windows下的话, 对于中断信号应该会有事件通知吧?
UNIX下, 似乎没见过支持这种中断处理模式啊, 一般都是有个读进程以block方式来接收的.
system888net
[quote]原帖由 [i]piaoyizu[/i] 于 2008-6-29 17:10 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8697238&ptid=1182727][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
没有操作系统。 在纯底层下的。 有什么好的方法么? [/quote]
那只有用汇编直接操作IO地址端口了(一般PC机上com的io地址是0x2f8和0x3f8,当然在bios里可设置地址 ).
[[i] 本帖最后由 system888net 于 2008-6-29 20:55 编辑 [/i]]
insane
回复 #1 piaoyizu 的帖子
不知道这样行不行呢?
首先设一个中断标志,
在第二点,你应该可以判断buffer里的数据是否满了吧.
当buffer里的数据满了以后,你可以把中断标志置1,再做你相应的处理,
处理完后,把中断标志置0,buffer继续接收数据.
说得不是很清楚.
NalaGinrut
[quote]原帖由 [i]piaoyizu[/i] 于 2008-6-28 11:36 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8691128&ptid=1182727][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
请求大家个问题, 关于串口传输的. 以前用串口都是用轮循方式操作的. 现在需要用中断方式收发数据. 没有操作系统的。 在纯底层下
中断方式我是这样处理的:
1. 建立一个全局的buffer, 一个全局的计数.
2. ... [/quote]
1、什么CPU?问这种问题首先要告知CPU类别
2、注册一个中断处理(没有OS的情况下应该是很好弄的,不外乎按你喜好随意建立个中断向量,然后把中断处理函数的入口地址与其中一个向量相关联),使得BUFFER满的时候产生中断(也就是计数器到位的时候来个中断),随后跳转到这个中断处理,在这个中断处理里面进行你需要的数据操作
3、悄悄问一个,你用这个来实现什么的?