本帖最后由 899 于 2022-4-7 11:01 编辑
请各位大佬帮忙看看问题出在哪里,一直卡在dht11的初始化,就是主函数main.c的
while(DHT11_Init()) {
printf("\r\n DHT11 init error");
delay_ms(50);
}
开发板为 STM32F103ZET6
传感器 DHT11 3线
接线正确 电源线接5v 3.3v都尝试过 数据线接的为PG11
使用的例程为正点原子的DHT11代码 代码如下
dht11.c代码为:
- #include "dht11.h"
- #include "delay.h"
复制代码 dht11.h
- #ifndef __DHT11_H
- #define __DHT11_H
- #include "sys.h"
- #define DHT11_IO_IN() {GPIOG->CRH&=0XFFFF0FFF;GPIOG->CRH|=8<<12;}
- #define DHT11_IO_OUT() {GPIOG->CRH&=0XFFFF0FFF;GPIOG->CRH|=3<<12;}
- #define DHT11_DQ_OUT PGout(11)
- #define DHT11_DQ_IN PGin(11)
- u8 DHT11_Init(void);//3õê¼»ˉDHT11
- u8 DHT11_Read_Data(u8 *temp,u8 *humi);
- u8 DHT11_Read_Byte(void);
- u8 DHT11_Read_Bit(void);
- u8 DHT11_Check(void);
- void DHT11_Rst(void);
- #endif
复制代码
main.c
- #include"stm32f10x.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- #include "dht11.h"
- int main(void)
- {
- u8 temperature,humidity;
- delay_init();
- uart_init(115200);
- LED_Init();
- printf("\r\n system init");
-
- while(DHT11_Init()) {
- printf("\r\n DHT11 init error");
- delay_ms(50);
- }
- printf("DHT11 init\n");
-
- while(1) {
- if(!DHT11_Read_Data(&temperature,&humidity)) {
- printf("\r\n t: %d ,h: %d",temperature,humidity);
- }else printf("READ ERROR");
- LED0=!LED0;
- delay_ms(300);
- }
- }
复制代码
|