自学内容网 自学内容网

【星汇极客】STM32 HAL库各种模块开发之DHT11模块

前言

        本人是一名嵌入式学习者,在大学期间也参加了不少的竞赛并获奖,包括:江苏省电子设计竞赛省一、睿抗机器人国二、中国高校智能机器人国二、嵌入式设计竞赛国三、光电设计竞赛国三、节能减排竞赛国三等

        暑假的时候参加了太多的比赛,作为队长要写代码、材料文档,几乎是比完赛过几天又要去其他比赛了,前段时间都在休息,现在才有时间来记录一下。后面会经常写一下博客分享一下,如果想了解其他项目、技术,可以去B站搜:星汇极客,主页链接:星汇极客B站

此外,还开发了个人网站,里面有一些资料和源码供下载:星汇极客

这里有一个竞赛交流q群:742622731

模块之DHT11模块

(1)CubeMX配置定时器2,在keil写us计时代码

串口1输出数据

(2)在keil添加dht11.c、dht11.h

在tim.h里写计时us代码

void delay_us(uint16_t us){
uint16_t differ = 0xffff-us-5;
__HAL_TIM_SET_COUNTER(&htim2,differ);//设定TIM7计数器起始值
HAL_TIM_Base_Start(&htim2);//启动定时器

while(differ < 0xffff-5){//判断
differ = __HAL_TIM_GET_COUNTER(&htim2);//查询计数器的计数值
}
HAL_TIM_Base_Stop(&htim2);
}

main.c

//fput重定向串口1
int fputc(int ch, FILE *f)
{      
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);   
return ch;
}


//温度
char tp[15] = "";
//湿度
char hd[15] = "";

float tpData;
float hdData;

uint16_t temperature;
uint16_t humidity;

 /* USER CODE BEGIN 2 */
while(DHT11_Init())
{
printf("DHT11 Checked failed!!!\r\n");
HAL_Delay(500);
}
printf("DHT11 Checked Sucess!!!\r\n");


  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
//温湿度读取
DHT11_Read_Data(&temperature,&humidity);

//温湿度数据
printf("DHT11 Temperature = %d.%d degree\r\n",temperature>>8,temperature&0xff);
printf("DHT11 Humidity = %d.%d%%\r\n",humidity>>8,humidity&0xff);

HAL_Delay(1000);

    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

结,关注下方获取源码、资料:


原文地址:https://blog.csdn.net/m0_59412477/article/details/142728575

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!