[STM32F4] 【F446RE开发板试用】定时器输入捕获读取DHT11

[复制链接]
1576|1
 楼主| stm32learn 发表于 2015-10-3 13:26 | 显示全部楼层 |阅读模式
上次使用延时的方法读取DHT11,今天使用定时器TIM2输入捕获的方式读取DHT11。
硬件使用TIM2的CH0通道(PA0)捕获DHT11输出的数据,判断电平时间来判断数据0还是1,中断方式。
同时使用PA1接到DHT11的数据引脚,用于输出启动测试信号,18ms的低电平。

=====================================================

先上效果吧:
0030.png
下面简单说一下程序实现:
1、首先定义用到的变量:
0022.png
2、
主函数,每10s启动一次DHT11数据读取,然后判断是否读正确,正确则输出数据:
0023.png
3、
定时器TIM2的CH1通道输入捕获回调函数,每次进入,首先看是否位第0次进入:
0025.png
每次捕获到边沿后,判断时间,来判断数据位是1还是0,然后写入变量保存:
0026.png
4、定时器TIM2的溢出中断,用于判断DHT11是否有超时:
0027.png
5、启动一次测试,输出18ms的低电平,然后启动定时器TIM2的CH1通道输入捕获功能,中断方式:
0028.png
6、校验DHT11的数据是否正确:
0029.png

7、还是上主程序压缩文件:
main.zip (3.9 KB, 下载次数: 27)

打赏榜单

21ic小喇叭 打赏了 3.00 元 2015-10-26

jjjkkk00 发表于 2016-5-22 17:12 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

90

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部