Browse Source

Create 'Clock' module.

Vladimir N. Shilov 3 years ago
parent
commit
eb97dbede1
7 changed files with 350 additions and 302 deletions
  1. 20 0
      Inc/clock.h
  2. 1 0
      Inc/main.h
  3. 25 1
      MDK-ARM/MNC-IN12x5.uvoptx
  4. 14 4
      MDK-ARM/MNC-IN12x5.uvprojx
  5. 2 1
      Makefile
  6. 287 0
      Src/clock.c
  7. 1 296
      Src/main.c

+ 20 - 0
Inc/clock.h

@@ -0,0 +1,20 @@
+#pragma once
+
+#ifndef _CLOCK_H
+#define _CLOCK_H
+
+/* Includes */
+#include "main.h"
+
+/* macro */
+/* Display timeout, sec */
+#define DISP_WDT_TIME   10
+
+/* variables */
+extern rtc_t Clock;
+
+/* function prototypes */
+void btnProcess(void);
+void new_Second(void);
+
+#endif /* _CLOCK_H */

+ 1 - 0
Inc/main.h

@@ -37,6 +37,7 @@ extern "C" {
 #include "rtos.h"
 #include "event-system.h"
 #include "list_event.h"
+#include "clock.h"
 
 /* Exported types ------------------------------------------------------------*/
 typedef enum {

+ 25 - 1
MDK-ARM/MNC-IN12x5.uvoptx

@@ -551,6 +551,30 @@
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
+    <File>
+      <GroupNumber>2</GroupNumber>
+      <FileNumber>24</FileNumber>
+      <FileType>5</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\Inc\clock.h</PathWithFileName>
+      <FilenameWithoutPath>clock.h</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>2</GroupNumber>
+      <FileNumber>25</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\Src\clock.c</PathWithFileName>
+      <FilenameWithoutPath>clock.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
   </Group>
 
   <Group>
@@ -561,7 +585,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>24</FileNumber>
+      <FileNumber>26</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>

+ 14 - 4
MDK-ARM/MNC-IN12x5.uvprojx

@@ -173,7 +173,7 @@
             <AdsLven>1</AdsLven>
             <AdsLsxf>1</AdsLsxf>
             <RvctClst>1</RvctClst>
-            <GenPPlst>0</GenPPlst>
+            <GenPPlst>1</GenPPlst>
             <AdsCpuType>"Cortex-M0+"</AdsCpuType>
             <RvctDeviceName></RvctDeviceName>
             <mOS>0</mOS>
@@ -313,7 +313,7 @@
           </ArmAdsMisc>
           <Cads>
             <interw>1</interw>
-            <Optim>1</Optim>
+            <Optim>0</Optim>
             <oTime>0</oTime>
             <SplitLS>0</SplitLS>
             <OneElfS>1</OneElfS>
@@ -328,7 +328,7 @@
             <uC99>1</uC99>
             <uGnu>1</uGnu>
             <useXO>0</useXO>
-            <v6Lang>3</v6Lang>
+            <v6Lang>6</v6Lang>
             <v6LangP>3</v6LangP>
             <vShortEn>1</vShortEn>
             <vShortWch>1</vShortWch>
@@ -346,7 +346,7 @@
             <interw>1</interw>
             <Ropi>0</Ropi>
             <Rwpi>0</Rwpi>
-            <thumb>0</thumb>
+            <thumb>1</thumb>
             <SplitLS>0</SplitLS>
             <SwStkChk>0</SwStkChk>
             <NoWarn>0</NoWarn>
@@ -554,6 +554,16 @@
               <FileType>5</FileType>
               <FilePath>..\Inc\sensor.h</FilePath>
             </File>
+            <File>
+              <FileName>clock.h</FileName>
+              <FileType>5</FileType>
+              <FilePath>..\Inc\clock.h</FilePath>
+            </File>
+            <File>
+              <FileName>clock.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\Src\clock.c</FilePath>
+            </File>
           </Files>
         </Group>
         <Group>

+ 2 - 1
Makefile

@@ -22,7 +22,7 @@ TARGET = MNC-IN12x5
 # debug build?
 DEBUG = 0
 # optimization
-OPT = -Os
+OPT = -O2
 OPT += -ffunction-sections -fdata-sections
 OPT += -fno-strict-aliasing
 OPT += -ffast-math -msoft-float -mfloat-abi=soft
@@ -42,6 +42,7 @@ C_SOURCES =  \
 Src/main.c \
 Src/board.c \
 Src/sensor.c \
+Src/clock.c \
 Src/stm32g0xx_it.c \
 Src/i2c.c \
 Src/ds3231.c \

+ 287 - 0
Src/clock.c

@@ -0,0 +1,287 @@
+#include "clock.h"
+
+/* variables */
+rtc_t Clock;
+static btn_t Button[BTN_NUM] = {
+  {0, evBTN1Pressed, evBTN1Holded,  BTN1_PIN},
+  {0, evBTN2Pressed, evBTN2Pressed, BTN2_PIN},
+  {0, evBTN3Pressed, evBTN3Pressed, BTN3_PIN},
+  {0, evBTN4Pressed, evBTN4Holded,  BTN4_PIN}
+};
+static volatile uint8_t dispWDT = 0;
+
+/* function prototypes */
+static void Color_RGB(const uint8_t r, const uint8_t g, const uint8_t b);
+static void MinusFadeIn(void);
+static void MinusFadeOut(void);
+
+/* funcions */
+/**
+  * @brief  Вывод HEX значений цвета в таймер.
+  * @param  : RGB value in range 0x00-0xFF
+  * @retval : None
+  */
+static void Color_RGB(uint8_t r, uint8_t g, uint8_t b) {
+  COLOR_R(r);
+  COLOR_G(g);
+  COLOR_B(b);
+}
+
+/**
+  * @brief  Обработка кнопок.
+  * @param  : None
+  * @retval : None
+  */
+void btnProcess(void) {
+  /* get pin state */
+  uint32_t pins = BTNS_STATE;
+
+  int i;
+  for (i=0; i<BTN_NUM; i++) {
+    if ((pins & Button[i].pin) == 0) {
+    /* button pressed */
+      Button[i].time ++;
+      if (Button[i].time >= (BTN_TIME_HOLDED/BTN_SCAN_PERIOD)) {
+        Button[i].time -= (BTN_TIME_REPEATED/BTN_SCAN_PERIOD);
+        if (Button[i].holded == Button[i].pressed) {
+          /* if pressed and holded - same function, then button pressed auto repeat */
+          ES_PlaceEvent(Button[i].pressed);
+        }
+      }
+    } else if (Button[i].time != 0) {
+    /* button released */
+      if (Button[i].time >= ((BTN_TIME_HOLDED - BTN_TIME_REPEATED)/BTN_SCAN_PERIOD)) {
+        /* process long press */
+        ES_PlaceEvent(Button[i].holded);
+      } else if (Button[i].time >= (BTN_TIME_PRESSED/BTN_SCAN_PERIOD)) {
+        /* process short press */
+        ES_PlaceEvent(Button[i].pressed);
+      }
+      Button[i].time = 0;
+      RTOS_SetTask(btnProcess, BTN_SCAN_PAUSE, BTN_SCAN_PERIOD);
+    }
+  } /* end FOR */
+}
+
+void new_Second(void) {
+//  Blink_Start(); // !!! TODO
+  RTC_ReadAll(&Clock);
+
+  if (dispWDT != 0) {
+    dispWDT--;
+    if (dispWDT == 0) {
+      ES_PlaceEvent(evDisplayWDT);
+    }
+  }
+}
+/**
+  * On/off symbols on IN-15 tube.
+  */
+void in15Off(void) {
+  IN15_OFF;
+  TUBE_C_OFF;
+}
+
+void in15Minus(void) {
+  IN15_OFF;
+  IN15_Minus;
+  TUBE_C_ON;
+}
+
+void in15Plus(void) {
+  IN15_OFF;
+  IN15_Plus;
+  TUBE_C_ON;
+}
+
+void in15Percent(void) {
+  IN15_OFF;
+  IN15_Percent;
+  TUBE_C_ON;
+}
+
+void in15P(void) {
+  IN15_OFF;
+  IN15_P;
+  TUBE_C_ON;
+}
+
+/** 'Faded' funcions */
+ static void MinusFadeIn(void) {
+  static uint8_t on = 0;
+  static uint8_t off = 20;
+  static uint8_t st = 0;
+
+  if (st == 0) {
+    st = 1;
+    IN15_Minus;
+    on += 2;
+    if (on < 20) {
+      RTOS_SetTask(MinusFadeIn, on, 0);
+    } else {
+      on = 0; off = 20; st = 0;
+    }
+  } else {
+    st = 0;
+    IN15_OFF;
+    off -= 2;
+    RTOS_SetTask(MinusFadeIn, off, 0);
+  }
+}
+
+static void MinusFadeOut(void) {
+  static uint8_t off = 0;
+  static uint8_t on = 20;
+  static uint8_t st = 0;
+
+  if (st == 0) {
+    st = 1;
+    IN15_OFF;
+    off += 2;
+    if (off < 20) {
+      RTOS_SetTask(MinusFadeOut, off, 0);
+    } else {
+      off = 0; on = 20; st = 0;
+    }
+  } else {
+    st = 0;
+    IN15_Minus;
+    on -= 2;
+    RTOS_SetTask(MinusFadeOut, on, 0);
+  }
+}
+
+/**
+  * Show info on tubes.
+  */
+void showTime(void) {
+  MinusFadeIn();
+  RTOS_SetTask(MinusFadeOut, 500, 0);
+
+  int16_t hue = bcd2bin(Clock.Sec) * 6;
+  HSV2LED(hue, 255, 255);
+
+  uint8_t buf[4];
+  buf[Tube_A] = Clock.Hr >> 4;
+  buf[Tube_B] = Clock.Hr & 0xf;
+  buf[Tube_D] = Clock.Min >> 4;
+  buf[Tube_E] = Clock.Min & 0xf;
+  showDigits(buf);
+}
+
+void showWD(void) {
+  dispWDT = DISP_WDT_TIME;
+  IN15_OFF;
+
+  uint8_t buf[4];
+  buf[Tube_A] = 0xf;
+  buf[Tube_B] = Clock.WD & 0xf;
+  buf[Tube_D] = 0xf;
+  buf[Tube_E] = 0xf;
+  showDigits(buf);
+}
+
+void showDay(void) {
+  dispWDT = DISP_WDT_TIME;
+  IN15_OFF;
+
+  uint8_t buf[4];
+  buf[Tube_A] = Clock.Day >> 4;
+  buf[Tube_B] = Clock.Day & 0xf;
+  buf[Tube_D] = 0xf;
+  buf[Tube_E] = 0xf;
+  showDigits(buf);
+}
+
+void showMonth(void) {
+  dispWDT = DISP_WDT_TIME;
+  IN15_OFF;
+
+  uint8_t buf[4];
+  buf[Tube_A] = 0xf;
+  buf[Tube_B] = 0xf;
+  buf[Tube_D] = Clock.Mon >> 4;
+  buf[Tube_E] = Clock.Mon & 0xf;
+  showDigits(buf);
+}
+
+void showDayMon(void) {
+  dispWDT = DISP_WDT_TIME;
+  IN15_OFF;
+
+  uint8_t buf[4];
+  buf[Tube_A] = Clock.Day >> 4;
+  buf[Tube_B] = Clock.Day & 0xf;
+  buf[Tube_D] = Clock.Mon >> 4;
+  buf[Tube_E] = Clock.Mon & 0xf;
+  showDigits(buf);
+}
+
+void showYear(void) {
+  dispWDT = DISP_WDT_TIME;
+  IN15_OFF;
+
+  uint8_t buf[4];
+  buf[Tube_A] = 2;
+  buf[Tube_B] = 0;
+  buf[Tube_D] = Clock.Year >> 4;
+  buf[Tube_E] = Clock.Year & 0xf;
+  showDigits(buf);
+}
+
+void showHumidity(void) {
+  dispWDT = DISP_WDT_TIME;
+  in15Percent();
+
+  uint8_t buf[4];
+  buf[Tube_A] = Humidity / 10;
+  buf[Tube_B] = Humidity % 10;
+  buf[Tube_D] = 0xf;
+  buf[Tube_E] = 0xf;
+  showDigits(buf);
+}
+
+void showTemperature(void) {
+  dispWDT = DISP_WDT_TIME;
+  in15Plus();
+
+  uint8_t buf[4];
+  buf[Tube_A] = 0xf;
+  buf[Tube_B] = 0xf;
+  buf[Tube_D] = Temperature / 10;
+  buf[Tube_E] = Temperature % 10;
+  showDigits(buf);
+}
+
+void showPressure(void) {
+  dispWDT = DISP_WDT_TIME;
+  in15P();
+
+  uint8_t buf[4];
+  int tmp;
+  buf[Tube_A] = 0xf;
+  buf[Tube_B] = Pressure / 100;
+  tmp = Pressure % 100;
+  buf[Tube_D] = tmp / 10;
+  buf[Tube_E] = tmp % 10;
+  showDigits(buf);
+}
+
+/* Simple function for cyclic show all sensor data */
+void showSensorData(void) {
+  ES_SetState(stShowSensorData);
+  RTOS_DeleteTask(MinusFadeOut);
+  Color_RGB(0xFF, 0x12, 0x0); // Nixie color. FF1200 or FF7E00 or FFBF00
+
+  showTemperature();
+  tdelay_ms(3000);
+
+  showHumidity();
+  tdelay_ms(3000);
+
+  showPressure();
+  tdelay_ms(3000);
+
+  ES_SetState(stShowTime);
+  showTime();
+}

+ 1 - 296
Src/main.c

@@ -30,8 +30,6 @@
 
 /* Private define ------------------------------------------------------------*/
 /* USER CODE BEGIN PD */
-/* Display timeout, sec */
-#define DISP_WDT_TIME   10
 /* USER CODE END PD */
 
 /* Private macro -------------------------------------------------------------*/
@@ -39,27 +37,12 @@
 /* USER CODE END PM */
 
 /* Private variables ---------------------------------------------------------*/
-
 /* USER CODE BEGIN PV */
 volatile flag_t Flag = {0};
-static rtc_t Clock;
-static btn_t Button[BTN_NUM] = {
-  {0, evBTN1Pressed, evBTN1Holded,  BTN1_PIN},
-  {0, evBTN2Pressed, evBTN2Pressed, BTN2_PIN},
-  {0, evBTN3Pressed, evBTN3Pressed, BTN3_PIN},
-  {0, evBTN4Pressed, evBTN4Holded,  BTN4_PIN}
-};
-static volatile uint8_t dispWDT = 0;
-
 /* USER CODE END PV */
 
 /* Private function prototypes -----------------------------------------------*/
 /* USER CODE BEGIN PFP */
-static void btnProcess(void);
-static void Color_RGB(uint8_t r, uint8_t g, uint8_t b);
-static void ColorCircle(void);
-void MinusFadeIn(void);
-void MinusFadeOut(void);
 /* USER CODE END PFP */
 
 /* Private user code ---------------------------------------------------------*/
@@ -91,7 +74,6 @@ int main(void)
   RTOS_SetTask(btnProcess, 1, BTN_SCAN_PERIOD);
 
   /* USER CODE BEGIN WHILE */
-  Color_RGB(0xFF, 0x12, 0x0); // Nixie color. FF1200 or FF7E00 or FFBF00
   showTime();
 
   /* Infinite loop */
@@ -100,20 +82,8 @@ int main(void)
     /* new second interrupt from RTC */
     if (Flag.RTC_IRQ != 0) {
       Flag.RTC_IRQ = 0;
-      ColorCircle();
-
-			Blink_Start(); // !!! TODO
-      RTC_ReadAll(&Clock);
-
-      if (dispWDT != 0) {
-        dispWDT --;
-        if (dispWDT == 0) {
-          ES_PlaceEvent(evDisplayWDT);
-        }
-      }
-
+      new_Second();
     } /* end of New second */
-
     /* USER CODE END WHILE */
 
     /* USER CODE BEGIN 3 */
@@ -130,271 +100,6 @@ int main(void)
 } /* End of mine() */
 
 /* USER CODE BEGIN 4 */
-/*************************
- * S U B R O U T I N E S *
- *************************/
-/**
-  * @brief  Вывод HEX значений цвета в таймер.
-  * @param  : RGB value in range 0x00-0xFF
-  * @retval : None
-  */
-static void Color_RGB(uint8_t r, uint8_t g, uint8_t b) {
-  COLOR_R(r);
-  COLOR_G(g);
-  COLOR_B(b);
-}
-
-/* cheng led color by time seconds */
-static void ColorCircle(void) {
-  int16_t hue = bcd2bin(Clock.Sec) * 6;
-  HSV2LED(hue, 255, 255);
-}
-
-/**
-  * @brief  Обработка кнопок.
-  * @param  : None
-  * @retval : None
-  */
-static void btnProcess(void) {
-  /* get pin state */
-  uint32_t pins = BTNS_STATE;
-
-  int i;
-  for (i=0; i<BTN_NUM; i++) {
-    if ((pins & Button[i].pin) == 0) {
-    /* button pressed */
-      Button[i].time ++;
-      if (Button[i].time >= (BTN_TIME_HOLDED/BTN_SCAN_PERIOD)) {
-        Button[i].time -= (BTN_TIME_REPEATED/BTN_SCAN_PERIOD);
-        if (Button[i].holded == Button[i].pressed) {
-          /* if pressed and holded - same function, then button pressed auto repeat */
-          ES_PlaceEvent(Button[i].pressed);
-        }
-      }
-    } else if (Button[i].time != 0) {
-    /* button released */
-      if (Button[i].time >= ((BTN_TIME_HOLDED - BTN_TIME_REPEATED)/BTN_SCAN_PERIOD)) {
-        /* process long press */
-        ES_PlaceEvent(Button[i].holded);
-      } else if (Button[i].time >= (BTN_TIME_PRESSED/BTN_SCAN_PERIOD)) {
-        /* process short press */
-        ES_PlaceEvent(Button[i].pressed);
-      }
-      Button[i].time = 0;
-      RTOS_SetTask(btnProcess, BTN_SCAN_PAUSE, BTN_SCAN_PERIOD);
-    }
-  } /* end FOR */
-}
-
-/**
-  * On/off symbols on IN-15 tube.
-  */
-void in15Off(void) {
-  IN15_OFF;
-  TUBE_C_OFF;
-}
-
-void in15Minus(void) {
-  IN15_OFF;
-  IN15_Minus;
-  TUBE_C_ON;
-}
-
-void MinusFadeIn(void) {
-  static uint8_t on = 0;
-  static uint8_t off = 20;
-  static uint8_t st = 0;
-
-  if (st == 0) {
-    st = 1;
-    IN15_Minus;
-    on += 2;
-    if (on < 20) {
-      RTOS_SetTask(MinusFadeIn, on, 0);
-    } else {
-      on = 0; off = 20; st = 0;
-    }
-  } else {
-    st = 0;
-    IN15_OFF;
-    off -= 2;
-    RTOS_SetTask(MinusFadeIn, off, 0);
-  }
-}
-
-void MinusFadeOut(void) {
-  static uint8_t off = 0;
-  static uint8_t on = 20;
-  static uint8_t st = 0;
-
-  if (st == 0) {
-    st = 1;
-    IN15_OFF;
-    off += 2;
-    if (off < 20) {
-      RTOS_SetTask(MinusFadeOut, off, 0);
-    } else {
-      off = 0; on = 20; st = 0;
-    }
-  } else {
-    st = 0;
-    IN15_Minus;
-    on -= 2;
-    RTOS_SetTask(MinusFadeOut, on, 0);
-  }
-}
-
-void in15Plus(void) {
-  IN15_OFF;
-  IN15_Plus;
-  TUBE_C_ON;
-}
-
-void in15Percent(void) {
-  IN15_OFF;
-  IN15_Percent;
-  TUBE_C_ON;
-}
-
-void in15P(void) {
-  IN15_OFF;
-  IN15_P;
-  TUBE_C_ON;
-}
-
-/**
-  * Show info on tubes.
-  */
-void showTime(void) {
-  //in15Minus();
-  //RTOS_SetTask(in15Off, 500, 0);
-  MinusFadeIn();
-  RTOS_SetTask(MinusFadeOut, 500, 0);
-
-  uint8_t buf[4];
-  buf[Tube_A] = Clock.Hr >> 4;
-  buf[Tube_B] = Clock.Hr & 0xf;
-  buf[Tube_D] = Clock.Min >> 4;
-  buf[Tube_E] = Clock.Min & 0xf;
-  showDigits(buf);
-}
-
-void showWD(void) {
-  dispWDT = DISP_WDT_TIME;
-  IN15_OFF;
-
-  uint8_t buf[4];
-  buf[Tube_A] = 0xf;
-  buf[Tube_B] = Clock.WD & 0xf;
-  buf[Tube_D] = 0xf;
-  buf[Tube_E] = 0xf;
-  showDigits(buf);
-}
-
-void showDay(void) {
-  dispWDT = DISP_WDT_TIME;
-  IN15_OFF;
-
-  uint8_t buf[4];
-  buf[Tube_A] = Clock.Day >> 4;
-  buf[Tube_B] = Clock.Day & 0xf;
-  buf[Tube_D] = 0xf;
-  buf[Tube_E] = 0xf;
-  showDigits(buf);
-}
-
-void showMonth(void) {
-  dispWDT = DISP_WDT_TIME;
-  IN15_OFF;
-
-  uint8_t buf[4];
-  buf[Tube_A] = 0xf;
-  buf[Tube_B] = 0xf;
-  buf[Tube_D] = Clock.Mon >> 4;
-  buf[Tube_E] = Clock.Mon & 0xf;
-  showDigits(buf);
-}
-
-void showDayMon(void) {
-  dispWDT = DISP_WDT_TIME;
-  IN15_OFF;
-
-  uint8_t buf[4];
-  buf[Tube_A] = Clock.Day >> 4;
-  buf[Tube_B] = Clock.Day & 0xf;
-  buf[Tube_D] = Clock.Mon >> 4;
-  buf[Tube_E] = Clock.Mon & 0xf;
-  showDigits(buf);
-}
-
-void showYear(void) {
-  dispWDT = DISP_WDT_TIME;
-  IN15_OFF;
-
-  uint8_t buf[4];
-  buf[Tube_A] = 2;
-  buf[Tube_B] = 0;
-  buf[Tube_D] = Clock.Year >> 4;
-  buf[Tube_E] = Clock.Year & 0xf;
-  showDigits(buf);
-}
-
-void showHumidity(void) {
-  dispWDT = DISP_WDT_TIME;
-  in15Percent();
-
-  uint8_t buf[4];
-  buf[Tube_A] = Humidity / 10;
-  buf[Tube_B] = Humidity % 10;
-  buf[Tube_D] = 0xf;
-  buf[Tube_E] = 0xf;
-  showDigits(buf);
-}
-
-void showTemperature(void) {
-  dispWDT = DISP_WDT_TIME;
-  in15Plus();
-
-  uint8_t buf[4];
-  buf[Tube_A] = 0xf;
-  buf[Tube_B] = 0xf;
-  buf[Tube_D] = Temperature / 10;
-  buf[Tube_E] = Temperature % 10;
-  showDigits(buf);
-}
-
-void showPressure(void) {
-  dispWDT = DISP_WDT_TIME;
-  in15P();
-
-  uint8_t buf[4];
-  int tmp;
-  buf[Tube_A] = 0xf;
-  buf[Tube_B] = Pressure / 100;
-  tmp = Pressure % 100;
-  buf[Tube_D] = tmp / 10;
-  buf[Tube_E] = tmp % 10;
-  showDigits(buf);
-}
-
-/* Simple function for cyclic show all sensor data */
-void showSensorData(void) {
-  ES_SetState(stShowSensorData);
-  RTOS_DeleteTask(MinusFadeOut);
-  RTOS_DeleteTask(ColorCircle);
-
-  showTemperature();
-  tdelay_ms(3000);
-
-  showHumidity();
-  tdelay_ms(3000);
-
-  showPressure();
-  tdelay_ms(3000);
-
-  ES_SetState(stShowTime);
-  showTime();
-}
 
 /* USER CODE END 4 */