1. 项目背景与核心需求
在嵌入式开发领域,光照强度检测与响应是智能家居、工业自动化等场景中的基础功能。使用STM32的ADC模块采集光敏传感器信号,再通过PWM控制LED亮度,构成了典型的闭环控制系统。这个项目看似简单,却涵盖了嵌入式开发的三个核心环节:传感器数据采集(ADC)、控制逻辑实现(HAL库编程)和执行器驱动(PWM调光)。
选择HAL库而非标准库开发,主要基于两点考虑:首先,HAL库提供了更高层次的硬件抽象,使代码在不同STM32系列间具有更好的可移植性;其次,CubeMX工具可自动生成初始化代码,大幅降低开发门槛。但HAL库的封装也带来了一些独特挑战,比如ADC校准机制的理解、DMA配置的特殊性等,这些正是本项目的技术深挖点。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件设计与环境搭建
2.1 关键器件选型
光敏传感器推荐使用GL5528光敏电阻,其特性曲线在室内光照范围内(10-1000 Lux)具有良好线性度。与STM32F103C8T6开发板连接时,需构建分压电路:
code复制VCC ---[10kΩ]---+---[GL5528]--- GND
|
ADC_IN
在3.3V系统下,当光照从完全黑暗到强光时,ADC_IN电压变化范围约为0.5V-2.8V。注意要在ADC输入端添加0.1μF滤波电容,抑制高频干扰。
2.2 CubeMX工程配置
-
时钟配置:在Clock Configuration标签页,确保HCLK设置为72MHz(STM32F1系列最大值),APB2预分频器保持不分频,因为ADC时钟源自APB2。
-
ADC参数设置:
- Resolution:12位(4096级分辨率)
- Scan Conversion Mode:Disabled(单通道模式)
- Continuous Conversion Mode:Disabled(单次转换)
- Data Alignment:Right(便于直接读取数值)
- Sampling Time:建议55.5 cycles(对应5.11μs@72MHz)
-
GPIO分配:
- 光敏传感器接PC0(ADC1_IN10)
- LED控制接
