以下通過pin驅動來大概介紹rtthread驅動程序的編寫方法
- 首先rtthread的驅動主要存放在兩個文件夾中,分別為Drivers和DeviceDrivers;
- Drivers文件夾中:
- 在Drivers文件夾中的drv_gpio主要承擔GPIO硬件相關的操作,實現如下6個函數;
- stm32_pin_mode,
- stm32_pin_write,
- stm32_pin_read,
- stm32_pin_attach_irq,
- stm32_pin_dettach_irq,
- stm32_pin_irq_enable
- 這6個函數都是都是直接和硬件打交道的,通過驅動框架最終調用的都是這6個函數;
- 實現完這6個和硬件打交道的函數后,就把函數名(也就是函數的入口地址)填入到rt_pin_ops結構體中,以實現上層應用到底層驅動的連接;
- 在Drivers文件夾中的drv_gpio主要承擔GPIO硬件相關的操作,實現如下6個函數;
- DeviceDrivers文件夾中:
- 在DeviceDrivers文件夾中pin主要是實現驅動層代碼到應用層的對接,具體實現代碼是通過以下幾個函數:
- _pin_read
- _pin_write
- _pin_control
- 同時還要把硬件操作相關Drivers中的rt_pin_ops結構體中的函數與rt_device_pin中的ops相關聯;
- 最終_pin_read等三個函數可以通過rt_device_pin間接調用到底層的硬件;
- 這樣就完成了從應用程序到驅動程序的轉換,實現了軟件分層;
- 在DeviceDrivers文件夾中pin主要是實現驅動層代碼到應用層的對接,具體實現代碼是通過以下幾個函數:
- 總結:
- 這一套驅動框架的目的就是為了實現驅動與應用的分層,以實現高內聚、低耦合的軟件編程思想。
