1. 项目背景与硬件选型解析
在工业控制和智能家居领域,温度监测是最基础也最关键的环节之一。这次我选用STM32F103C8T6作为主控芯片,搭配DL10B-232-V05温度传感器,构建了一个典型的单点温度监测系统。这套组合的优势在于:STM32F103C8T6作为经典的Cortex-M3内核MCU,72MHz主频和丰富的外设接口完全能满足常规采集需求;而DL10B-232-V05作为工业级RS232接口温度传感器,测量范围-40℃~+80℃,精度±0.5℃,特别适合环境监控场景。
硬件连接上需要注意几个关键点:传感器供电采用独立5V电源避免干扰,TXD/RXD交叉连接单片机USART接口,记得加上MAX3232电平转换芯片。实际布线时,传感器信号线最好使用双绞线,长度超过3米时建议增加终端电阻。我在初期测试时就因为没注意这点,导致数据出现跳变,后来用示波器抓波形才发现信号质量有问题。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 开发环境搭建与基础配置
2.1 工具链选择
我选择的是Keil MDK-ARM开发环境,搭配ST-Link V2调试器。相比CubeMX+TrueStudio的组合,Keil在调试阶段的断点管理和变量监控更顺手。新建工程时要注意:
- 器件选择STM32F103C8(别看型号是C8T6,选C8就行)
- 勾选Use MicroLIB以减小代码体积
- 在Options->Target里勾选Use FPU(虽然本项目用不到浮点运算,但养成习惯)
2.2 USART外设初始化
DL10B-232-V05的通信参数是固定的:9600bps、8数据位、无校验、1停止位。初始化代码要特别注意:
c复制void USART1_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);
// TXD(PA9)复用推挽输出
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
// RXD(PA10)浮空输入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATI
