標(biāo)題: 基于STM32和ucos系統(tǒng)的室內(nèi)環(huán)境檢測(cè)源程序 [打印本頁(yè)]

作者: 055441    時(shí)間: 2020-6-10 16:29
標(biāo)題: 基于STM32和ucos系統(tǒng)的室內(nèi)環(huán)境檢測(cè)源程序
本系統(tǒng)是基于STM32F1系列的
電路原理圖如下:

源碼在壓縮包里可自取
  1. #include "main.h"
  2. #include "usart.h"
  3. #include "stdio.h"
  4. #include "lcd.h"
  5. #include "GUI.h"
  6. #include "tu.h"
  7. #include "adc.h"
  8. #include "dht11.h"


  9. void BSP_Init(void)
  10. {
  11.         ADC_Config();


  12.         LED_Config();
  13.         BEEP_Config();
  14.          
  15.         Usart1_Config(9600);
  16.         LCD_Init();
  17.         Paint_Bmp(20,10,64,64,gImage_tu);
  18.         Show_Str(30,40,BRRED,RED,"環(huán)境傳感器",16,11);
  19.         LCD_Clear(WHITE);
  20.         
  21.         
  22.         
  23. }


  24. #define TASK_PRIO     4          //設(shè)置優(yōu)先級(jí)
  25. #define TASK_STK_SIZE   128       //堆?臻g大小
  26. OS_STK  taskstk[TASK_STK_SIZE];       //定義堆?臻g
  27. void TASK_START(void *pdata);

  28. //#define LED_PRIO     9          //設(shè)置優(yōu)先級(jí)
  29. //#define LED_STK_SIZE   64       //堆?臻g大小
  30. //OS_STK  ledstk[LED_STK_SIZE];       //定義堆?臻g
  31. //void LED_TASK(void *pdata);

  32. //#define LED_PRIO1     8         //設(shè)置優(yōu)先級(jí)
  33. //#define LED1_STK_SIZE   64       //堆?臻g大小
  34. //OS_STK  led1stk[LED1_STK_SIZE];       //定義堆?臻g
  35. //void LED_TASK1(void *pdata);

  36. //#define USART_PRIO     7         //設(shè)置優(yōu)先級(jí)
  37. //#define USART_STK_SIZE   64       //堆?臻g大小
  38. //OS_STK  usartstk[USART_STK_SIZE];       //定義堆?臻g
  39. //void USART_TASK(void *pdata);

  40. #define ADC_PRIO     5         //設(shè)置優(yōu)先級(jí)
  41. #define ADC_STK_SIZE   128       //堆?臻g大小
  42. OS_STK  adcstk[ADC_STK_SIZE];       //定義堆?臻g
  43. void ADC_TASK(void *pdata);

  44. #define DHT11_PRIO     6         //設(shè)置優(yōu)先級(jí)
  45. #define DHT11_STK_SIZE   128       //堆?臻g大小
  46. OS_STK  dht11stk[ADC_STK_SIZE];       //定義堆棧空間
  47. void DHT11_TASK(void *pdata);

  48. /**
  49.   * @brief  Main program.
  50.   * @param  None
  51.   * @retval None
  52.   */
  53. int main(void)
  54. {
  55.         BSP_Init();
  56. //while(1)
  57. {
  58.         // BSP_Init();
  59.         OSInit();   //初始化ucos-ii
  60.         //創(chuàng)建任務(wù)
  61.         OSTaskCreate(TASK_START,NULL,&taskstk[TASK_STK_SIZE-1],TASK_PRIO);
  62.         OS_CPU_SysTickInit();
  63.         OSStart(); //啟動(dòng)多任務(wù)環(huán)境
  64. }
  65. }

  66. void TASK_START(void *pdata)
  67. {
  68.         pdata = pdata;
  69.         OS_CPU_SR cpu_sr;
  70.         while(1)
  71.         {
  72.         OS_ENTER_CRITICAL();  //進(jìn)入臨界段  --關(guān)中斷
  73. //        OSTaskCreate(LED_TASK,NULL,&ledstk[LED_STK_SIZE-1],LED_PRIO);

  74.         //OSTaskCreate(USART_TASK,NULL,&usartstk[USART_STK_SIZE-1],USART_PRIO);
  75.         OSTaskCreate(ADC_TASK,NULL,&adcstk[ADC_STK_SIZE-1],ADC_PRIO);
  76. //  OSTaskCreate(LED_TASK1,NULL,&led1stk[LED1_STK_SIZE-1],LED_PRIO1);
  77.         OSTaskCreate(DHT11_TASK,NULL,&dht11stk[DHT11_STK_SIZE-1],DHT11_PRIO);

  78.         OS_EXIT_CRITICAL();  //退出臨界段  --開(kāi)中斷
  79.         OSTaskSuspend(TASK_PRIO);
  80.         }
  81. }


  82. void LED_TASK(void *pdata)
  83. {
  84.         pdata = pdata; //防止編譯器報(bào)警告
  85.         while(1)
  86.         {
  87.                 LED1_Toggle();
  88.                 OSTimeDlyHMSM(0,0,0,500);
  89.         }
  90. }
  91. void LED_TASK1(void *pdata)
  92. {
  93.         pdata = pdata; //防止編譯器報(bào)警告
  94.         while(1)
  95.         {
  96.                 LED2_Toggle();
  97.                 OSTimeDlyHMSM(0,0,0,500);
  98.         }
  99. }

  100. void ADC_TASK(void *pdata)
  101. {
  102.         u16 ADC_Val;
  103.         pdata=pdata;
  104.         char displsyData[20]={0};
  105.         while(1)
  106.         {
  107.                 ADC_Val=ADC_GetValue();
  108.                 printf("ADC_Value=%d\r\n",ADC_GetValue());
  109.                 sprintf(displsyData,"LCD_ADCValue=%d",ADC_Val);
  110.                 Show_Str(5,20,BRRED,YELLOW,(u8 *)displsyData,16,11);
  111.                 OSTimeDlyHMSM(0,0,0,500);
  112.         }
  113. }
  114. void DHT11_TASK(void *pdata)
  115. {
  116.         pdata=pdata;
  117.         u8 temp,hum;
  118.         char displsyData[20]={0};
  119.         char displsyData1[20]={0};
  120.         while(1)
  121.         {
  122.                 DHT11_ReadTAndH(&temp,&hum);
  123.                 printf("temp = %d\r\n,hum=%d\r\n",temp,hum);
  124.                 if(temp>10) BEEP(1);
  125.                 sprintf(displsyData,"Temp=%d",temp);
  126.                
  127.                 Show_Str(5,50,BRRED,YELLOW,(u8 *)displsyData,16,11);
  128.                 sprintf(displsyData1,"Hum=%d",hum);
  129.                 Show_Str(5,80,BRRED,YELLOW,(u8 *)displsyData1,16,11);
  130.                 OSTimeDlyHMSM(0,0,2,0);
  131.                
  132.                
  133.         }
  134.         
  135. }
復(fù)制代碼
全部程序51hei下載地址:
例程.7z (277.75 KB, 下載次數(shù): 34)

作者: 51hei團(tuán)團(tuán)    時(shí)間: 2020-6-11 14:19
好資料 樓主你好,壓縮包里面 沒(méi)有仿真工程啊  能分享一下嗎?
作者: XYB1995    時(shí)間: 2020-6-11 16:17
請(qǐng)問(wèn)樓主,能分享一下你的仿真程序嗎?謝謝




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1