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

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

你可能感兴趣的:(xNix开发)