製作完自己板子的BSP後使用scons --dist命令生成獨立的工程,複製一份出來作爲新的工程。
我的上一篇文章有講怎麼生成自己的BSP,地址在這裏https://blog.csdn.net/qq_25186745/article/details/103808138
SHT20時IIC總線驅動,所以先要添加IIC驅動到menuconfig目錄中。
先打開復制好的工程目錄,打開Kconfig文件,文件目錄
在文件裏添加I2C的menu,這裏可以參考BSP里正點原子的stm32f103-atk-warshipv3裏的Kconfig文件目錄。
修改後如圖。
然後啓動env進入menuconfig,然後在Hardware Drivers Config->On-chip Peripheral Drivers裏就能看到有了Enable I2C1 BUS這個選項了
進入Enable I2C1 BUS裏面後要選擇SCL和SDA引腳編號,具體的引腳編號可以在stm32f103-my-bsp\libraries\HAL_Drivers下的drv_gpio.c文件中查看。我的板子上SDA引腳接的是單片機的PD0,SCL腳接的是單片機的PD1,所以這裏填48和49。
我們把這個打開,然後進入RT-Thread online packages--->peripheral libraries and drivers--->sht20...........
開啓這個選項,其中每個功能配置如下
sht2x: digital humidity and temperature sensor sht2x driver library
:選擇使用sht20
軟件包;Enable average filter by software
:開啓採集溫溼度軟件平均數濾波器功能;The number of averaging
:取平均數的採樣數目;Peroid of sampling data(unit ms)
:採集數據的週期,時間單位ms
;Version
:配置軟件包版本,默認最新版本。
保存退出menuconfig後使用pkgs --update命令更新驅動包到BSP中。
然後使用scons --target=mdk5命令更新工程
然後打開工程可以看到在工程中已經添加上了sht20的驅動文件。
然後在main函數的初始化中加入sht20的初始化函數,加上sht20的頭文件,編譯下載。
然後打開PuTTY,輸入ps命令可以看到已經有sht20的任務了。
然後輸入sht20 probe i2c1來探測傳感器,
sht20的文檔在這裏http://packages.rt-thread.org/detail.html?package=sht2x
如果沒有返回值代表正常,否則探測失敗。
然後輸入sht20 read讀取sht20的溫溼度。
返回溫度是112,溼度-6,這肯定不正常啊。難道移值失敗了嗎?
仔細想想IIC兩條線用的是PD0和PD1,而STM32F103RC芯片要使用這兩個腳的話和其他引腳不一樣,要多一個初始化,不知道drv_gpio.c裏面有沒有加這句初始化,既然不知道那就加上再說。
然後在編譯、下載。這下就正常了,SHT20驅動移值完畢。
看來drv_gpio.c裏面沒有將PD0和PD1作爲普通的GPIO口,所以以後要用到PD0和PD1的話不要忘了加上__HAL_AFIO_REMAP_PD01_ENABLE();
移值完成的工程文件