中断方式实现发送数据串口驱动

本文探讨了使用中断方式实现串口数据发送的技术细节。重点介绍了配置8259中断控制器和modem控制寄存器的方法,同时对比了两种不同的实现方案:一种是直接写入发送保持寄存器;另一种是在vxworks操作系统中通过不断刷新中断允许寄存器来实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    在网上找了不少串口方面的资料,国内的资料都没有提到如何用中断方式来实现串口数据发送。其实,采用中断方式实现串口数据发送和采用中断方式实现串口数据接收的过程差不多,都需要开放8259的IRQ3或IRQ级中断,并需要设定modem控制寄存器使OUT2输出低电平,设置中断允许寄存器开放发送和接收中断。
    这里有一点需要注意,《The Art of assembly language programming》中提到,发送寄存器为空时串口会产生中断,但是只会产生一次,书中采用的解决办法是通过IO端口直接写入发送保持寄存器,此时发送完毕后串口便又会产生“发送保持寄存器为空”中断。还有一种方法,我在分析vxworks的串口驱动程序时看到,vxworks采用的是刷新中断允许寄存器的方法(就是每次发送前都设置中断允许寄存器),从实际效果来看是可以的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值