本文研究STM32F411RE_NUCLEO如何使用RT_Thread开源软件包快速驱动DHT11温湿度传感器。git
1.RT_Thread开源软件包简介github
软件包运行于RT-Thread物联网操做系统平台上,面向不一样应用领域的软件组件造成一个个软件包,由软件包描述信息,软件包源代码或库文件组成。ide
(1) 相似Linux Kconfig方式的menuconfig工具
(2) 支持Linux、Windows、MacOS跨平台使用操作系统
(3) 管理系统功能,组件以及线上软件包3d
软件包下载统计:code
由上图可知,RT_Thread软件包逐渐的受你们欢迎,目前RT_Thread每一年开巡城演唱会,哈哈,你们能够关注RT_Thread公众号及时了解RT_Thread最新发展状况。blog
2.Kconfig基础知识ip
RT-Thread 借助 Kconfig 文件生成的配置文件 rtconfig.h 来配置系统,Kconfig 文件是各类配置界面的源文件。开发
举个简单的例子,咱们修改kconfig文件内容,增长一组显示在env配置工具的配置信息。
(1)查看当前映射关系
咱们先看下bsp/stm32/stm32f411-st-nucleo/board/下的kconfig文件内容
能够看到menu "Onboard Peripheral Drivers"栏目内容为空,env控制台输入menuconfig,结果以下:
能够看到Onboard Peripheral Drivers、on-chip Peripheral Drivers和kconfig文件中的配置对应,打开Onboard Peripheral Drivers ,为空。
(1)修改kconfig文件
增长一组DHT11的配置信息,以下:
查看env工具下Hardware Drivers Config/Onboard Peripheral Drivers:
使能Enable DHT11 drivers,能够看到子栏目显示出来了。
这个时候退出保存后,会在rtconfig.h中显示PKG_USING_DHT11,至此,咱们达到了经过修改kconfig文件,自定义配置信息的目的。
关于kconfig更多使用,请参考rt_thread官网文档中心:https://www.rt-thread.org/document/site/programming-manual/kconfig/kconfig/
1.下载dht11软件包
登陆rt_thread官网软件包页面,http://packages.rt-thread.org/
搜索dht11,以下所示:
2.环境配置
(1) 配置DHT11
上述介绍Kconfig的时候,咱们已经修改了kconfig,而修改的内容正式驱动DTH11所必须的,缘由以下:
咱们下载的软件包须要依赖两个全局变量,这个时候咱们能够手动定义在rtconfig.h中,可是这样会引入一个问题,当你下次再使用env工具增长其余工具,退出保存后,咱们在rtconfig.h中的手动定义内容会丢失,由于rtconfig.h中文件是根据env配置自动生成更新,而咱们从后台下载的软件包不在env配置工具上面,因此须要我们把PKG_USING_DHT11放到kconig文件下,而后能够经过env工具打开便可,若是读者按照我得步骤,此时咱们已经修改好了PKG_USING_DHT11,接下来,咱们继续修改env配置信息,打开PKG_USING_DHT11_SAMPLE.
查看rtconfig.h变化:
(2) 配置Sensor
进入RT-Thread Components/Device Drivers/目录,打开Using Sensor device drivers
1.硬件链接
查看原理图,找到PB12引脚:
实物链接:
2.下载rtthread.bin
在Env控制台输入scons编译代码,而后将rtthread.bin文件烧录到stm32中便可。从新上电设备Log以下:
从Log信息能够看出,咱们已经成功驱动起来了DHT11温湿度传感器。
4、结语
1.总结:
本节完,实际操做过程当中须要注意的地方有以下几点:
(1) kconfig使用
对于一些env工具默认没有提供的组件,我的认为手动修改kconfig,使其出如今env工具中便于以后更多组件的统一管理,若是不修改kconfig组件,直接定义在rtconfig.h文件中,后续增长其余组件时候,咱们以前在rtconfig.h中定义的宏将会消失,这样致使,每次增长一个组件,都须要手动添加回去,比较痛苦,因此咱们配置下kconfig.
(2) 组件使用
咱们下载了dht11组件,也配置了kconfig文件的时候,会发现scons编译仍然失败,此时不要怕,看错误提示,我这边看到提示找不到include "sensor.h"因而想起来没有用env配置工具打开sensor,总之遇到问题不要方,好好排查吧,实在解决不了,能够在群里和你们交流。
2.后记:
如您在使用过程当中有任何问题,请加QQ群进一步交流,也能够github提Issue。
QQ交流群:906015840 (备注:物联网项目交流)
github仓库地址:https://github.com/solitary-sand/rt_thread/
一叶孤沙出品:一沙一世界,一叶一菩提