在用cubeMX生成包含RT Thread的代码的时候,一直很疑惑配置界面中那个”device框架”是干嘛的,Nano的文档里说可以移植一些设备驱动组件以使用一些软件包。但文档里怎么移植说的模糊不清。我在经过整整一天的探索后终于把PIN组件移植进了RT-Thread Nano里并成功注册识别。
开发环境:cubeMX生成的包含RT-Thread的代码,在Clion里用gcc编译链进行编译,MCU:STM32F103C8T6 ST-Link调试
准备文件:需要从RT-Thread标准版中提取四个文件:pin.c pin.h drv_gpio.c drv_gpio.h
四个文件的位置分别为:
(注意:所用文件提取自RT-Thread的master主分支,RT-Thread Studio里生成的工程文件是否可用未知;master分支里的drv_gpio.c和.h不止一个,以stm32为例的话需要挑选出针对stm32的drv_gpio头文件和源代码)
移植步骤:
1.在cubeMX创建的工程中把上述4个文件塞进去。(理论上只要你还找得着在哪塞哪都行,我个人是在Middlewares/Third_Party/RealThread_RTOS/components建立了个名叫pin的文件夹,把四个文件全放在里边)
2.更改包含头文件,具体为:
3.在board.c的rt_hw_board_init()里引用rt_hw_pin_init();(board.c中要包含drv_gpio.h)
4.在需要用的地方包含上drv_gpio.h,已经可以用了,可以在控制台上用list_device指令观察到pin设备已注册
(个人认为可以新建一个device.h,然后把drv_gpio.h放在里面,再在rttthread.h中包含device.h)
(不行了有点困了,高清截图还有别的啥的睡醒了之后再说)
很努力呀。
也可以试试这个,这个直接可以用设备框架。
https://github.com/RT-Thread/rt-thread/tree/master/bsp/stm32/stm32f103-blue-pill
NANO+设备驱动框架?那直接用标准RTT得了啊
这个不就是标准的RT-Tread版本吗@RTT_逍遥