前言
本人是一名嵌入式学习者,在大学期间也参加了不少的竞赛并获奖,包括:江苏省电子设计竞赛省一、睿抗机器人国二、中国高校智能机器人国二、嵌入式设计竞赛国三、光电设计竞赛国三、节能减排竞赛国三等。
暑假的时候参加了太多的比赛,作为队长要写代码、材料文档,几乎是比完赛过几天又要去其他比赛了,前段时间都在休息,现在才有时间来记录一下。后面会经常写一下博客分享一下,如果想了解其他项目、技术,可以去B站搜:星汇极客,主页链接:星汇极客B站
此外,还开发了个人网站,里面有一些资料和源码供下载:星汇极客
模块之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 */
结,关注下方获取源码、资料: