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