找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2336|回复: 0
收起左侧

STM32温湿度监测程序

[复制链接]
ID:669804 发表于 2019-12-25 16:50 | 显示全部楼层 |阅读模式
  1. /**
  2.   ******************************************************************************
  3.   * @file    main.c
  4.   * @author  Supowang  any question please send mail to 512965803@qq.com
  5.   * @version V1.0
  6.   * @date    2016-12-07
  7.   * @brief   Huawei LiteOS第三方开发板移植DEMO
  8.   ******************************************************************************
  9.   *       
  10.         * 本例程仅供学习参考,Huawei LiteOS和所有驱动代码版权由原作者享有。
  11.   ******************************************************************************
  12.   */
  13. /* Includes ------------------------------------------------------------------*/
  14. // Huawei LiteOS头文件
  15. #include "stdio.h"
  16. #include "stdlib.h"
  17. #include "string.h"
  18. #include "los_base.h"
  19. #include "los_config.h"
  20. #include "los_typedef.h"
  21. #include "los_hwi.h"
  22. #include "los_task.ph"
  23. #include "los_sem.h"
  24. #include "los_event.h"
  25. #include "los_memory.h"
  26. #include "los_queue.ph"
  27. // STM32硬件相关头文件
  28. #include "stm32f10x.h"
  29. #include "bsp_led.h"
  30. #include "bsp_usart.h"
  31. #include "bsp_lcd.h"
  32. #include "bsp_dht11.h"
  33. void Delay(__IO u32 nCount);
  34. #define SOFT_DELAY Delay(0x0FFFFF);
  35. UINT32 g_TestTskHandle;
  36. DHT11_Data_TypeDef  DHT11_Data;
  37. void Delay(__IO uint32_t nCount) //简单延时
  38. {
  39.         for(; nCount != 0; nCount--);
  40. }
  41. void hardware_init(void)
  42. {
  43.                 LED_GPIO_Config();
  44.                 USART_Config();
  45.                 DHT11_Init();
  46.                 LCD_Init ();  
  47.                 ILI9341_GramScan ( 1 );
  48.                 ILI9341_Clear ( 0, 0, 240, 320, macWHITE);
  49.                 ILI9341_DispString_EN ( 0, 10, "  Welcome to Huawei LiteOS!", macWHITE, macRED );
  50.                 ILI9341_DispString_EN ( 10, 40, "Task1 Running Count is: ", macWHITE, macBLUE );
  51.                 ILI9341_DispString_EN ( 10, 60, "Task2 Running Count is: ", macWHITE, macBLUE );
  52.                 ILI9341_DispString_EN ( 45, 90, "Task3: DHT11 DEMO ", macWHITE, macBLUE );
  53.                 ILI9341_DispString_EN ( 30, 110, "Temperature is:", macWHITE, macBLACK );
  54.                 ILI9341_DispString_EN ( 30, 130, "Humidity is:", macWHITE, macBLACK );
  55. }
  56. VOID task1(void)
  57. {
  58.         UINT32 uwRet = LOS_OK;
  59.         UINT32 count=0;
  60.         char str[10];
  61.         while(1)
  62.         {
  63.                 count++;
  64.                 sprintf(str,"%d",count);
  65.                 ILI9341_DispString_EN ( 200, 40, str, macWHITE, macRED );
  66.                 printf("This is task 1,count is %d\r\n",count);
  67.                 LED1_TOGGLE;
  68.                 LED2_TOGGLE;
  69.                 uwRet = LOS_TaskDelay(1000);
  70.                 if(uwRet !=LOS_OK)
  71.                         return;
  72.         }
  73. }
  74. UINT32 creat_task1(void)
  75. {
  76.         UINT32 uwRet = LOS_OK;
  77.         TSK_INIT_PARAM_S task_init_param;
  78.         task_init_param.usTaskPrio = 1;
  79.         task_init_param.pcName = "task1";
  80.         task_init_param.pfnTaskEntry = (TSK_ENTRY_FUNC)task1;
  81.         task_init_param.uwStackSize = LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE;
  82.         task_init_param.uwResved = LOS_TASK_STATUS_DETACHED;
  83.         uwRet = LOS_TaskCreate(&g_TestTskHandle,&task_init_param);
  84.         if(uwRet !=LOS_OK)
  85.         {
  86.                 return uwRet;
  87.         }
  88.         return uwRet;
  89. }

  90. VOID task2(void)
  91. {
  92.         UINT32 uwRet = LOS_OK;
  93.         UINT32 count=0;
  94.         char str[10];
  95.         while(1)
  96.         {
  97.                 count++;
  98.                 sprintf(str,"%d",count);
  99.                 ILI9341_DispString_EN ( 200, 60, str, macWHITE, macRED );
  100.                 printf("This is task 2,count is %d\r\n",count);
  101.                 LED2_TOGGLE;
  102.                 LED3_TOGGLE;
  103.                 uwRet = LOS_TaskDelay(2000);
  104.                 if(uwRet !=LOS_OK)
  105.                         return;
  106.         }
  107. }

  108. UINT32 creat_task2(void)
  109. {
  110.         UINT32 uwRet = LOS_OK;
  111.         TSK_INIT_PARAM_S task_init_param;
  112.         task_init_param.usTaskPrio = 1;
  113.         task_init_param.pcName = "task2";
  114.         task_init_param.pfnTaskEntry = (TSK_ENTRY_FUNC)task2;
  115.         task_init_param.uwStackSize = LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE;
  116.         task_init_param.uwResved = LOS_TASK_STATUS_DETACHED;
  117.         uwRet = LOS_TaskCreate(&g_TestTskHandle,&task_init_param);
  118.         if(uwRet !=LOS_OK)
  119.         {
  120.                 return uwRet;
  121.         }
  122.         return uwRet;
  123. }


  124. VOID DHT11_task(void)
  125. {
  126.         UINT32 uwRet = LOS_OK;
  127.         char cStr1[10];
  128.         char cStr2[10];
  129.         while(1)
  130.         {
  131.                 if(DHT11_Read_TempAndHumidity(&DHT11_Data)==SUCCESS)
  132.                 {
  133.                         sprintf(cStr1,"%d.%d C",DHT11_Data.temp_int,DHT11_Data.temp_deci);
  134.                         sprintf(cStr2,"%d.%d %%RH",DHT11_Data.humi_int,DHT11_Data.humi_deci);
  135.                         ILI9341_DispString_EN ( 160, 110, cStr1, macWHITE, macRED );
  136.                         ILI9341_DispString_EN ( 140, 130, cStr2, macWHITE, macRED );
  137.                         printf("\r\n ??DHT11??,???%d.%d C,??? %d.%d %%RH",\
  138.                         DHT11_Data.temp_int,DHT11_Data.temp_deci,DHT11_Data.humi_int,DHT11_Data.humi_deci);
  139.                 }
  140.                 else
  141.                 {
  142.                         printf("DHT11 ERROR!\r\n");
  143.                 }
  144.                 uwRet = LOS_TaskDelay(2000);
  145.                 if(uwRet !=LOS_OK)
  146.                         return;
  147.         }
  148. }

  149. UINT32 creat_DHT11_task(void)
  150. {
  151.         UINT32 uwRet = LOS_OK;
  152.         TSK_INIT_PARAM_S task_init_param;
  153.         task_init_param.usTaskPrio = 0;
  154.         task_init_param.pcName = "DHT11_task";
  155.         task_init_param.pfnTaskEntry = (TSK_ENTRY_FUNC)DHT11_task;
  156.         task_init_param.uwStackSize = LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE;
  157.         task_init_param.uwResved = LOS_TASK_STATUS_DETACHED;
  158.         uwRet = LOS_TaskCreate(&g_TestTskHandle,&task_init_param);
  159.         if(uwRet !=LOS_OK)
  160.         {
  161.                 return uwRet;
  162.         }
  163.         return uwRet;
  164. }

  165. UINT32 osAppInit(void)
  166. {
  167.         UINT32 uwRet = 0;
  168.         hardware_init();
  169.         LED1_ON;
  170.         SOFT_DELAY;
  171.         uwRet = creat_task1();
  172.         if(uwRet !=LOS_OK)
  173.         {
  174.                 return uwRet;
  175.         }
  176.         uwRet = creat_task2();
  177.         if(uwRet !=LOS_OK)
  178.         {
  179.                 return uwRet;
  180.         }
  181.         uwRet = creat_DHT11_task();
  182.         if(uwRet !=LOS_OK)
  183.         {
  184.                 return uwRet;
  185.         }
  186.         return LOS_OK;
  187. }
  188. /*********************************************END OF FILE**********************/
复制代码


温湿度检测.7z

257.04 KB, 下载次数: 23, 下载积分: 黑币 -5

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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