stm32f103rb_hal_blink

Non-blocking, event triggered blink example using HAL library
Index Commits Files Refs README
app/src/task_sensor.c (2626B)
   1 /*
   2  * Copyright (c) 2023 Juan Manuel Cruz <jcruz@fi.uba.ar> <jcruz@frba.utn.edu.ar>.
   3  * Copyright (c) 2026 Martin Javier Klöckner <mklockner@fi.uba.ar>
   4  *
   5  * See file `LICENSE` for full details
   6  */
   7 
   8 #include "main.h"
   9 
  10 #include "logger.h"
  11 #include "dwt.h"
  12 
  13 #include "board.h"
  14 #include "app.h"
  15 #include "task_sensor_attribute.h"
  16 #include "task_system_attribute.h"
  17 #include "task_system_interface.h"
  18 
  19 #define G_TASK_SEN_CNT_INIT     0ul
  20 #define G_TASK_SEN_TICK_CNT_INI 0ul
  21 
  22 #define DEL_BTN_XX_MIN          0ul
  23 #define DEL_BTN_XX_MED          25ul
  24 #define DEL_BTN_XX_MAX          50ul
  25 
  26 const task_sensor_cfg_t task_sensor_cfg_list[] = {
  27 };
  28 
  29 #define SENSOR_CFG_QTY (sizeof(task_sensor_cfg_list)/sizeof(task_sensor_cfg_t))
  30 
  31 task_sensor_dta_t task_sensor_dta_list[] = {0};
  32 
  33 #define SENSOR_DTA_QTY (sizeof(task_sensor_dta_list)/sizeof(task_sensor_dta_t))
  34 
  35 void task_sensor_statechart(void);
  36 
  37 uint32_t g_task_sensor_cnt;
  38 
  39 // this variable is incremented by 1 on every ms by HAL_SysTick
  40 volatile uint32_t g_task_sensor_tick_cnt;
  41 
  42 void task_sensor_init(void *parameters)
  43 {
  44     // task_sensor_dta_t *p_task_sensor_dta;
  45     // task_sensor_st_t state;
  46     // task_sensor_ev_t event;
  47 
  48     LOGGER_INFO("Initializing `task_sensor`...");
  49 
  50     g_task_sensor_cnt = G_TASK_SEN_CNT_INIT;
  51 
  52     for (uint32_t index = 0; SENSOR_DTA_QTY > index; index++)
  53     {
  54         /* Init every associated sensor variables */
  55         // p_task_sensor_dta = &task_sensor_dta_list[index];
  56 
  57         // ...
  58     }
  59 
  60     LOGGER_INFO("Done initializing `task_sensor`");
  61 }
  62 
  63 void task_sensor_update(void *parameters)
  64 {
  65     bool b_time_update_required = false;
  66 
  67     __asm("CPSID i");
  68     if (G_TASK_SEN_TICK_CNT_INI < g_task_sensor_tick_cnt)
  69     {
  70         g_task_sensor_tick_cnt--;
  71         b_time_update_required = true;
  72     }
  73     __asm("CPSIE i");
  74 
  75     while (b_time_update_required)
  76     {
  77         g_task_sensor_cnt++;
  78 
  79         task_sensor_statechart();
  80 
  81         __asm("CPSID i");
  82         if (G_TASK_SEN_TICK_CNT_INI < g_task_sensor_tick_cnt)
  83         {
  84             g_task_sensor_tick_cnt--;
  85             b_time_update_required = true;
  86         }
  87         else
  88         {
  89             b_time_update_required = false;
  90         }
  91         __asm("CPSIE i");
  92     }
  93 }
  94 
  95 void task_sensor_statechart(void)
  96 {
  97     uint32_t index;
  98     const task_sensor_cfg_t *p_task_sensor_cfg;
  99     task_sensor_dta_t *p_task_sensor_dta;
 100 
 101     for (index = 0; SENSOR_DTA_QTY > index; index++)
 102     {
 103         p_task_sensor_cfg = &task_sensor_cfg_list[index];
 104         p_task_sensor_dta = &task_sensor_dta_list[index];
 105 
 106         // unused
 107         (void) p_task_sensor_cfg;
 108         (void) p_task_sensor_dta;
 109     }
 110 }