STM32 HAL庫驅動DHT11讀取溫濕度程式

2021-09-29 12:50:52 字數 4754 閱讀 6400

驅動dht11、dht22、ds18bb20等溫濕度模組時序是比較簡單的,關鍵在於控制好時序的延時時間,hal庫的延時函式hal_delay是毫秒級別延時函式,所關鍵點就是實現微秒級別的延時函式。

微秒級別延時函式實現見我的另一篇部落格:

//io方向設定

#define dht11_io_in()

// pc10 in mode

#define dht11_io_out()

// pc10 out mode

io操作函式

#define dht11_dq_out pcout(10)

//資料埠 pc10

#define dht11_dq_in pcin(10)

//資料埠 pc10

u8 dht11_init

(void);

//初始化dht11

u8 dht11_read_data

(u8 *temp, u8 *humi)

;//讀取溫濕度

u8 dht11_read_byte

(void);

//讀出乙個位元組

u8 dht11_read_bit

(void);

//讀出乙個位

u8 dht11_check

(void);

//檢測是否存在dht11

void

dht11_rst

(void);

//復位dht11

u8 dht11_read_data_float

(float

*temp,

float

*humi)

;#endif

#include

"dht11.h"

//復位dht11

void

dht11_rst

(void

)//等待dht11的回應

//返回1:未檢測到dht11的存在

//返回0:存在

u8 dht11_check

(void);

if(retry>=

100)

return1;

else retry=0;

while

(!dht11_dq_in&&retry<

100)

//dht11拉低後會再次拉高40~80us;if

(retry>=

100)

return1;

return0;

}//從dht11讀取乙個位

//返回值:1/0

u8 dht11_read_bit

(void

) retry=0;

while

(!dht11_dq_in&&retry<

100)

//等待變高電平

delay_us(40

);//等待40us

if(dht11_dq_in)

return1;

else

return0;

}//從dht11讀取乙個位元組

//返回值:讀到的資料

u8 dht11_read_byte

(void

)return dat;

}//從dht11讀取一次資料

//temp:溫度值(範圍:0~50°)

//humi:濕度值(範圍:20%~90%)

//返回值:0,正常;1,讀取失敗

u8 dht11_read_data

(u8 *temp,u8 *humi)if(

(buf[0]

+buf[1]

+buf[2]

+buf[3]

)==buf[4]

)}else

return1;

return0;

}u8 dht11_read_data_float

(float

*temp,

float

*humi)if(

(buf[0]

+buf[1]

+buf[2]

+buf[3]

)==buf[4]

)}else

return1;

return0;

}//初始化dht11的io口 dq 同時檢測dht11的存在

//返回1:不存在

//返回0:存在

u8 dht11_init

(void

)

STM32 HAL庫學習筆記

1 系統時鐘 一般用stm32cube生成,使用者只需要會用stm32cube就行。2 gpio輸出void led gpio config void 3 gpio輸入void key gpio config void 4 外部中斷void exti key config void void ext...

STM32 HAL庫學習筆記

1 普通函式與 函式的區別 對普通函式的呼叫 呼叫程式發出對普通函式的呼叫後,程式執行立即轉向被呼叫函式執行,直到被呼叫函式執行完畢後,再返 用程式繼續執行。從發出呼叫的程式的角度看,這個過程為 呼叫 等待被呼叫函式執行完畢 繼續執行 對 函式呼叫 呼叫程式發出對 函式的呼叫後,不等函式執行完畢,立...

STM32 HAL庫 韌體庫 公升級

1 使用官方提供的新功能。2 上個版本有bug,下個版本bug解決了的情況是可能的。不過,上個版本沒bug,下個版本有bug的情況是有的 微小概率事件 開啟 stm32h7xx.h ctrl f搜尋 version 1 通過官網獲取最新hal庫 1 2keil官網經常會卡著顯示不了後續內容,這時可以...