1. 环境准备与硬件选型
做STM32开发这么多年,我越来越觉得环境搭建和硬件选型是项目成功的关键。对于温湿度监测这种经典应用,选择合适的传感器和显示模块能让开发事半功倍。
先说说硬件配置:STM32F103C8T6这款芯片真是经典,价格亲民性能足够,特别适合初学者和快速原型开发。AHT20温湿度传感器是我实测过最稳定的数字传感器之一,比DHT11精度高不少,还直接输出数字信号,省去了模拟量处理的麻烦。OLED显示屏我推荐0.96寸SSD1306,I2C接口接线简单,显示效果清晰,关键是功耗低,特别适合电池供电的场景。
开发环境我习惯用STM32CubeMX + Keil MDK的组合。CubeMX可视化配置外设真的节省了大量时间,特别是对于I2C这种有时序要求的接口。记得安装STM32F1的HAL库,最新版本修复了不少已知问题。
接线方面要注意:AHT20和OLED都使用I2C接口时,可以共用一组I2C引脚(PB6/PB7或PB8/PB9),因为I2C支持设备地址寻址。AHT20的地址是0x38,OLED通常是0x3C或0x3D,不会冲突。VCC接3.3V,GND共地,这是基本操作但新手容易接错。
2. CubeMX工程配置
CubeMX的配置决定了底层驱动的稳定性,这里有几个关键点需要注意。
首先配置RCC时钟源,选择HSE(外部高速晶振)并设置系统时钟为72MHz,这是F103的满血状态。接着配置I2C1模块,模式选择I2C,参数保持默认的100kHz速度即可,毕竟温湿度数据更新不需要太快速度。
在GPIO设置里,检查I2C引脚是否自动配置为上拉模式,如果没有需要手动设置。I2C总线必须上拉,否则通信会不稳定。有些开发板硬件已经带了上拉电阻,软件配置时就要注意避免重复上拉。
USART1的配置也很重要,虽然最终数据显示在OLED上,但调试阶段串口打印是必不可少的。设置波特率为115200,8位数据位,无校验位,1位停止位,这是最常用的配置。
时钟树配置要确保I2C和USART的时钟源正确。我一般选择PCLK1作为I2C时钟源,PCLK2给USART,这样时序比较稳定。最后生成代码时,记得选


1506

被折叠的 条评论
为什么被折叠?



