本文研究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/
一葉孤沙出品:一沙一世界,一葉一菩提