STM32传感器模块编程实践

一、引言

在嵌入式系统开发中,STM32 微控制器凭借其高性能、低功耗等特点被广泛应用。而传感器模块作为获取外界环境信息的重要部件,与 STM32 结合使用能实现众多有趣且实用的项目。本文将以常见的 DHT11 温湿度传感器和 HC - SR04 超声波测距传感器为例,介绍 STM32 对传感器模块的编程实践。

二、DHT11 温湿度传感器编程实践

2.1 DHT11 传感器简介

DHT11 是一款数字式温湿度传感器,它能同时测量环境的温度和湿度,并以单总线的方式与微控制器进行通信。其测量范围为湿度 20% - 90%RH,温度 0 - 50℃,精度分别为 ±5%RH 和 ±2℃。

2.2 硬件连接

将 DHT11 的 DATA 引脚连接到 STM32 的一个 GPIO 引脚,例如 PA0;VCC 接 3.3V 或 5V 电源;GND 接地。

2.3 代码实现

#include "stm32f10x.h"
#include <stdio.h>

#define DHT11_PIN GPIO_Pin_0
#define DHT11_PORT GPIOA

// 延时函数,单位为微秒
void delay_us(uint32_t us) {
   
    uint32_t i;
    for (i = 0; i < us * 72 / 5; i++);
}

// 主机发送起始信号
void DHT11_Start(void) {
   
    GPIO_InitTypeDef GPIO_InitStructure;
    // 配置为推挽输出
    GPIO_InitStructure.GPIO_Pin = DHT11_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(DHT11_PORT, &GPIO_InitStructure);

    GPIO_ResetBits(DHT11_PORT, DHT11_PIN);
    delay_us(20000);  // 拉低至少 18ms
    GPIO_SetBits(DHT11_PORT, DHT11_PIN);
    delay_us(30);     // 拉高 20 - 40us
}

// 等待 DHT11 响应信号
uint8_t DHT11_Check_Response(void) {
   
    uint8_t retry = 0;
    GPIO_InitTypeDef GPIO_InitStructure;
    // 配置为浮空输入
    GPIO_InitStructure.GPIO_Pin = DHT11_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(DHT11_PORT, &GPIO_InitStructure);

    while (GPIO_ReadInputDataBit(DHT11_PORT, DHT11_PIN) && retry < 100) {
   
        r
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值