![RT-Thread设备驱动开发指南](https://wfqqreader-1252317822.image.myqcloud.com/cover/260/46670260/b_46670260.jpg)
上QQ阅读APP看书,第一时间看更新
2.2 创建UART设备
本节介绍如何创建UART设备。对UART设备来说,在驱动开发时需要先从struct rt_serial_device结构中派生出新的串口设备模型,然后根据自己的设备类型定义私有数据域。特别是在可能有多个类似设备的情况下(例如串口1、串口2),设备接口可以共用同一套接口,不同的只是各自的数据域(例如寄存器基地址)。
例如,STM32的UART设备模型从struct rt_serial_device派生,并增加了STM32 UART的特有数据结构,如STM32串口句柄、串口配置信息、DMA结构信息等,代码如下所示。
![](https://epubservercos.yuewen.com/8B2CE7/25929799901480006/epubprivate/OEBPS/Images/33_01.jpg?sign=1739480004-bGSpTNbQCBaqTC8dwx23BoBGssiQ5BZ2-0-b2ddce80f7cb44ed3c21248eb0f8ad47)
串口驱动根据此类型定义串口设备对象并初始化相关变量,MCU一般都支持多个串口,所以串口驱动也可以支持多个串口设备。以下是在驱动文件中定义多个串口设备的代码片段,其中定义了每个串口的配置信息,如名称、句柄、中断入口等,同时定义了串口配置信息表和串口对象表,包含多个串口对象信息。
![](https://epubservercos.yuewen.com/8B2CE7/25929799901480006/epubprivate/OEBPS/Images/33_02.jpg?sign=1739480004-uR9p922XaRZBJWg1RJiz2my9xBqXpXJg-0-6db7be141dbdd22d07952183ef51a634)
![](https://epubservercos.yuewen.com/8B2CE7/25929799901480006/epubprivate/OEBPS/Images/34_01.jpg?sign=1739480004-WYVkMV0JgSDZAb8aL40OGih0QFwf0NYW-0-a05c69fa0363038df8efb4e862004556)