制作完自己板子的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();
移值完成的工程文件