RT Thread PIN 部署上主要有 application 应用层,开发者自己创建的C文件或者模块 RTT IO Device 是RTT PIN接口,对于所有的应用程序来说,使用这个相同的接口。 RT HAL HAL interface 用于MCU 和RTT特定的 PIN接口之间的解耦 最后由MCU 官方HAL库实现PIN 组件的物理操作 application 应用程序 产生对PIN 读写操作的需求,其输入参数为RTT PIN INDEX ,特别的命名方式对开发者比较友好。它可以提供RTT PIN index PIN IO device 是PIN device 对象的实现,需要RTT PIN INEDX 作为输入参数,由_hw_pin对象的方法实现 PIN index 传输到解耦层进行PIN index 转换,最后到ST HAL库
文件依赖关系
app.c 调用 rt_pin_write(LED0_PIN, PIN_HIGH); 输入参数由 宏定义 #define LED0_PIN GET_PIN(C, 13)解释 PIN定义宏展开在 drv_gpio.h 展开后的GPIO PIN按照ST HAL库方式命名,需要STM32xxxx.h指定到GPIO实体位置。
移植 device pin 建立文件夹 pin copy rt-thread-master\bsp\stm32\libraries\HAL_Drivers drv_gpio.c drv_gpio.h
rt-thread-master\components\drivers\misc pin.c rt-thread-master\components\drivers\include\drivers pin.h pin 上一层文件夹
rt-thread-master\bsp\stm32\libraries\HAL_Drivers
drv_common.h
rt-thread-master\components\drivers\include rtdevice.h
\rt-thread-master\bsp\stm32\stm32h743-armfly-V7\board 主要是相同处理器信号的文档,也可以自行修改 board.c board.h
rtdevice.c 条件编译,关闭以下内容 去掉头文件中的路径 include <drivers/pin.h> 为 include <pin.h>
替换部分宏定义
rtconfig.h #define RT_USING_PIN
使用rtt pin api 前需要初始化 rt_hw_pin_init 移植过程中需要添加很多头文件,开启*.i 可以帮助debug,观察宏展开 Freertos + h743vit6 +Finsh+ device Pin 移植成功
Freertos + F103BillPill +Finsh+ device Pin 移植成功
|