OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3675|回复: 10

dht11,PA0可以采集温湿度,换成PA1就不行

[复制链接]

11

主题

38

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
447
金钱
447
注册时间
2014-9-4
在线时间
107 小时
发表于 2020-3-9 13:52:00 | 显示全部楼层 |阅读模式
6金钱
while(DHT11_Init())
    {
     delay_ms(200);
   }

u8 DHT11_Init(void)
{  
  GPIO_InitTypeDef  GPIO_InitStructure;
  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);  

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;    //改
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);      
  GPIO_SetBits(GPIOA,GPIO_Pin_1);       //改
      
DHT11_Rst();   
return DHT11_Check();
}
#define DHT11_IO_IN()     {GPIOA->CRL&=0XFFFFFF0F;GPIOA->CRL|=8<<1;}//改
#define DHT11_IO_OUT()  {GPIOA->CRL&=0XFFFFFF0F;GPIOA->CRL|=3<<1;}
      
#define DHT11_DQ_OUT PAout(1) //改
#define DHT11_DQ_IN  PAin(1)  //

端口没有被占用,用的stm32f103c8t6,PA0可以,PA1不行

最佳答案

查看完整内容[请看2#楼]

#define DHT11_IO_IN() {GPIOA->CRL&=0XFFFFFF0F;GPIOA->CRL|=8CRL|=3
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2020-3-9 13:52:01 | 显示全部楼层
#define DHT11_IO_IN()     {GPIOA->CRL&=0XFFFFFF0F;GPIOA->CRL|=8<<1;}//改
#define DHT11_IO_OUT()  {GPIOA->CRL&=0XFFFFFF0F;GPIOA->CRL|=3<<1;}

这两句宏定义写错了吧?应该是左移 4 bit吧,每4个bit控制一个GPIO
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

11

主题

38

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
447
金钱
447
注册时间
2014-9-4
在线时间
107 小时
 楼主| 发表于 2020-3-9 15:10:31 | 显示全部楼层
szczyb1314 发表于 2020-3-9 13:52
#define DHT11_IO_IN()     {GPIOA->CRL&=0XFFFFFF0F;GPIOA->CRL|=8CRL|=3

不是哈,这个寄存器分高8位和低8位,A0是左移0位,能够正常显示温湿度,A1左移1位额
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2020-3-9 15:12:46 | 显示全部楼层
liujia 发表于 2020-3-9 15:10
不是哈,这个寄存器分高8位和低8位,A0是左移0位,能够正常显示温湿度,A1左移1位额

你再去看看,CRH控制的是PA8-PA15,CRL控制的是PA0-PA7,CRL和CRH都是32bit的,就是每4个bit控制一个GPIO
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2020-3-9 15:14:19 | 显示全部楼层
liujia 发表于 2020-3-9 15:10
不是哈,这个寄存器分高8位和低8位,A0是左移0位,能够正常显示温湿度,A1左移1位额

还有你清零为啥清的是bit4-bit7,设置的时候却是设置了bit1-bit4???
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

11

主题

38

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
447
金钱
447
注册时间
2014-9-4
在线时间
107 小时
 楼主| 发表于 2020-3-9 15:29:06 | 显示全部楼层
szczyb1314 发表于 2020-3-9 15:14
还有你清零为啥清的是bit4-bit7,设置的时候却是设置了bit1-bit4???

非常感谢,那个移位是我错了,刚刚看了手册,再次感谢
回复

使用道具 举报

1

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2019-7-30
在线时间
29 小时
发表于 2020-5-15 14:06:59 | 显示全部楼层
楼主问题解决了吗?
回复

使用道具 举报

1

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2019-7-30
在线时间
29 小时
发表于 2020-5-15 14:07:42 | 显示全部楼层
我也在用PA1做DHT11,我的宏定义也是对的就是读不到数据
回复

使用道具 举报

1

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2019-7-30
在线时间
29 小时
发表于 2020-5-15 14:09:58 | 显示全部楼层
szczyb1314 发表于 2020-3-9 13:52
#define DHT11_IO_IN()     {GPIOA->CRL&=0XFFFFFF0F;GPIOA->CRL|=8CRL|=3

我用PE1就能读到数据,PA1就不行为啥啊
回复

使用道具 举报

4

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2020-4-26
在线时间
9 小时
发表于 2020-6-5 11:33:41 | 显示全部楼层
hhhhhhhhhhhhhhhh
回复

使用道具 举报

5

主题

269

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1053
金钱
1053
注册时间
2020-5-11
在线时间
253 小时
发表于 2020-6-5 13:16:14 | 显示全部楼层
KiwiChi 发表于 2020-5-15 14:09
我用PE1就能读到数据,PA1就不行为啥啊

检查初始化和宏定义吧。一般都是这俩错了。细心点再慢慢找
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-28 22:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表