嵌入式技术论坛
直播中

青sky

9年用户 1323经验值
擅长:模拟技术
私信 关注
[经验]

RT Thread PIN组件的物理操作

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

原作者:dengjingg

更多回帖

发帖
×
20
完善资料,
赚取积分