]> mj.ucw.cz Git - home-hw.git/blobdiff - Src/main.c
Time display through USB
[home-hw.git] / Src / main.c
index 57349e4521dd5e5ef16e148492eb2daa2b8bc153..bb225b2362046e2cdaf17476e555569404db85cf 100644 (file)
@@ -45,6 +45,8 @@
 #include "usb.h"
 #include "app.h"
 
+#include <string.h>
+
 /* USER CODE END Includes */
 
 /* Private variables ---------------------------------------------------------*/
@@ -71,6 +73,8 @@ static void MX_TIM4_Init(void);
 /* USER CODE END PFP */
 
 /* USER CODE BEGIN 0 */
+byte rx_display[8];
+volatile byte rx_display_ready;
 
 /* USER CODE END 0 */
 
@@ -128,17 +132,40 @@ int main(void)
   LL_TIM_EnableIT_UPDATE(TIM4);
   LL_TIM_GenerateEvent_UPDATE(TIM4);
 
+  {
+    byte buf[5] = { 0xff, 0xff, 10, 0xff, 0xff };
+    display_buffer(buf);
+  }
+
   /* USER CODE END 2 */
 
   /* Infinite loop */
   /* USER CODE BEGIN WHILE */
-  int cnt = 0;
   while (1)
   {
-    debug_printf("Counter = %d\n", cnt);
-    display_counter(cnt);
-    LL_mDelay(1000);
-    cnt++;
+    __disable_irq();
+    if (rx_display_ready)
+      {
+       byte rx[8];
+       rx_display_ready = 0;
+       memcpy(rx, rx_display, 8);
+       __enable_irq();
+       display_buffer(rx);
+      }
+    else
+      __enable_irq();
+
+    // debug_printf("Counter = %d\n", cnt);
+    // display_counter(cnt);
+
+    static byte led_state;
+    if (led_state)
+      LL_GPIO_SetOutputPin(LED_GPIO_Port, LED_Pin);
+    else
+      LL_GPIO_ResetOutputPin(LED_GPIO_Port, LED_Pin);
+    led_state ^= 1;
+
+    __WFI();
 
   /* USER CODE END WHILE */