基于WinCE6.0的 LPC3250串口驱动程序开发
Clpc32xxPdd16550UART是个抽象类,实现通用功能,具体的要分别由继承的标准串口Clpc32xxPdd16550Stan- dardUART类和高速串口Clpc32xxPdd16550HighUART类实现。在各自初始化时,主要是配置各种寄存器,实现具体硬件差异化,包括:配置UART时钟控制寄存器、时钟模式寄存器和时钟选择寄存器,分别使能UART时钟、设置自动时钟模式、选择相应的时钟源作为分频器的输入时钟;禁止UART3 Modem和UART6 IrDA功能;禁止UART的回送功能。
特别要强调的是关于中断的处理,串口驱动中断可以用动态映射,也可以用静态映射。在OEMInter-ruptHandler、 Clpc32xxPdd16550UART::Init、CPdd16550::Init、CPdd16550::ThreadRun等处加入调试打印信息,可以较快地找到问题所在,确定硬件中断是否映射为系统中断、系统中断与中断事件是否绑定、中断产生时是否进入相应的处理程序。中断处理好了,串口驱动就基本完成了。
上述工作结束后,就要添加串口的注册表。以串口3为例,主要是设置动态链接库DLL、设备基地址、中断号、前缀名、被加载的顺序等。根据注册表的 DeviceArrayIn-dex、CreateSerialObject就可以构造标准串口或高速串口类实例了, DeleteSerialObject在退出驱动时删除实例。具体代码如下:本文引用地址:https://www.eepw.com.cn/article/202649.htm
结 语 |
评论