中级会员
 
- 积分
- 293
- 金钱
- 293
- 注册时间
- 2021-2-5
- 在线时间
- 135 小时
|

楼主 |
发表于 2021-3-8 15:12:29
|
显示全部楼层
初始化代码:
u8 DHT11_Init(void)
{
RCC->APB2ENR|=1<<2; //使能PORTA口时钟
GPIOA->CRH&=0XFFFF0FFF;//PORTA7 推挽输出
GPIOA->CRH|=0X00003000;
DHT11_Rst();
return DHT11_Check();
}
IO口设置:
#ifndef __DHT11_H
#define __DHT11_H
#include "sys.h"
//IO方向设置
#define DHT11_IO_IN() {GPIOA->CRH&=0XFFFF0FFF;GPIOA->CRH|=8<<12;}
#define DHT11_IO_OUT() {GPIOA->CRH&=0XFFFF0FFF;GPIOA->CRH|=3<<12;}
////IO操作函数
#define DHT11_DQ_OUT PAout(11) //数据端口 PA7
#define DHT11_DQ_IN PAin(11) //数据端口 PA7
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
#endif
这个代码在正点原子的精英板上完全能运行,拿过来就不行,该改的都改了,
|
|