本帖最后由 damiaa 于 2023-8-19 21:08 编辑
《RT-Thread设备驱动开发指南》读书笔记一 串口驱动
书读万遍,其意自现。形式所迫做不到看万遍,才看了一遍。所以心得必定漏洞百出,希望看了一笑了之。以后每篇都请用这个态度对待。哈哈,配合配合。
据说RT-Thread的所有设备类都是rt_device派生来的。所以都有相同的继承
看看这个结构吧,到底是叫结构还是类呢。哈: 感觉吧,C也可以做出类一样的东西哦。只要使用结构和函数指针。
所以所有的设备类型其实在rt_device设备类里面枚举出来了,要实现的回调函数和rt_device_ops 类(操作函数集)。如果没有这个类,那你就实现init open close read write control函数 如果你用了RT_USING_POSIX_DEVIO那还有dfs_file_ops类和rt_wqueue_wait_queue结构。
好吧。rt_device类就先说到这里,反正是说不清道不明。
下面继续讲串口驱动。串口这玩意谁不会。嘿嘿。串口驱动?那得像上面讲的一样。套个模。所有的驱动文件都在这里:也不知道看不看得懂。叫串口驱动的有两个文件
据说是两个版本,还有宏定义选择:
STM32_uart就是继承了rt_serial_device 也就是从它派生来的,加了dma和串口句柄。
drv_uart.c中实现了串口的枚举:
配置选择:
串口设备时钟允许配置:
相应的gpio口的时钟允许配置
串口IO的相关配置:
串口配置:
前面的是设备的一些硬件的初始化,下面就是密切的和操作有关 的函数的实际实现:
Control
Putc
Getc
dma_transmit
uart_isr
dma_isr
中断入口
回调
发送和发送回调
串口的注册和初始化。
最后再回顾一下rt_uart_ops吧,看看都实现了没有。
这不,最后的就是注册了。哈 哈。读了一遍,也就这样 似懂非懂。
------------------------------------------------谢谢--------------------------------------------------------------