tdse-tp4_03-adc_pwm

FIUBA - Electrónica - Taller de Sistemas Embebidos - Trabajo Práctico No 4 - Proyecto No 03
Index Commits Files Refs README
commit bdd0998bc95646c5c68eb133f1eea2884cc0fbc8
parent a34c1844cad522c74cc43951ce7b6ad8a85eb5d2
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date:   Sat, 25 Oct 2025 18:35:24 -0300

Check return values of HAL ADC functinos

set ff=unix

Diffstat:
Mapp/src/task_adc.c | 232+++++++++++++++++++++++++++++++++++++++++--------------------------------------
1 file changed, 120 insertions(+), 112 deletions(-)
diff --git a/app/src/task_adc.c b/app/src/task_adc.c
@@ -1,112 +1,120 @@
-/*
- * Copyright (c) 2023 Juan Manuel Cruz <jcruz@fi.uba.ar> <jcruz@frba.utn.edu.ar>.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the copyright holder nor the names of its
- *    contributors may be used to endorse or promote products derived from
- *    this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
- * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @file   : task_adc.c
- * @date   : Set 26, 2023
- * @author : Juan Manuel Cruz <jcruz@fi.uba.ar> <jcruz@frba.utn.edu.ar>
- * @version    v1.0.0
- */
-
-/********************** inclusions *******************************************/
-/* Project includes. */
-#include "main.h"
-
-/* Demo includes. */
-#include "logger.h"
-#include "dwt.h"
-
-/* Application & Tasks includes. */
-#include "board.h"
-#include "app.h"
-
-/********************** macros and definitions *******************************/
-
-#define ADC_AVG_SAMPLES 10
-
-
-/********************** internal data declaration ****************************/
-
-
-/********************** internal functions declaration ***********************/
-HAL_StatusTypeDef ADC_Poll_Read(uint16_t *value);
-
-/********************** internal data definition *****************************/
-const char *p_task_adc = "Task ADC";
-
-/********************** external data declaration *****************************/
-
-extern ADC_HandleTypeDef hadc1;
-
-/********************** external functions definition ************************/
-void task_adc_init(void *parameters)
-{
-    shared_data_type *shared_data = (shared_data_type *) parameters;
-
-    /* Print out: Task Initialized */
-    LOGGER_LOG("  %s is running - %s\r\n", GET_NAME(task_adc_init), p_task_adc);
-
-    shared_data->adc_end_of_conversion = false;
-}
-
-void task_adc_update(void *parameters)
-{
-    shared_data_type *shared_data = (shared_data_type *) parameters;
-
-    if (HAL_OK == ADC_Poll_Read(&shared_data->adc_value))
-    {
-        shared_data->adc_end_of_conversion = true;
-    }
-    else
-    {
-        LOGGER_LOG("error\n");
-    }
-}
-
-// Requests start of conversion, waits until conversion done
-HAL_StatusTypeDef ADC_Poll_Read(uint16_t *value) {
-    // HAL_StatusTypeDef res;
-    uint32_t sum = 0;
-
-    for (int i = 0; i < ADC_AVG_SAMPLES; i++)
-    {
-        HAL_ADC_Start(&hadc1);
-        HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY);
-        sum += HAL_ADC_GetValue(&hadc1);
-        HAL_ADC_Stop(&hadc1);
-    }
-
-    *value = (sum / ADC_AVG_SAMPLES);
-    return HAL_OK;
-}
-
-
-
-/********************** end of file ******************************************/
+/*
+ * Copyright (c) 2023 Juan Manuel Cruz <jcruz@fi.uba.ar> <jcruz@frba.utn.edu.ar>.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * 3. Neither the name of the copyright holder nor the names of its
+ *    contributors may be used to endorse or promote products derived from
+ *    this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @file   : task_adc.c
+ * @date   : Set 26, 2023
+ * @author : Juan Manuel Cruz <jcruz@fi.uba.ar> <jcruz@frba.utn.edu.ar>
+ * @version    v1.0.0
+ */
+
+/********************** inclusions *******************************************/
+/* Project includes. */
+#include "main.h"
+
+/* Demo includes. */
+#include "logger.h"
+#include "dwt.h"
+
+/* Application & Tasks includes. */
+#include "board.h"
+#include "app.h"
+
+/********************** macros and definitions *******************************/
+
+#define ADC_AVG_SAMPLES 10
+
+
+/********************** internal data declaration ****************************/
+
+
+/********************** internal functions declaration ***********************/
+HAL_StatusTypeDef ADC_Poll_Read(uint16_t *value);
+
+/********************** internal data definition *****************************/
+const char *p_task_adc = "Task ADC";
+
+/********************** external data declaration *****************************/
+
+extern ADC_HandleTypeDef hadc1;
+
+/********************** external functions definition ************************/
+void task_adc_init(void *parameters)
+{
+    shared_data_type *shared_data = (shared_data_type *) parameters;
+
+    /* Print out: Task Initialized */
+    LOGGER_LOG("  %s is running - %s\r\n", GET_NAME(task_adc_init), p_task_adc);
+
+    shared_data->adc_end_of_conversion = false;
+}
+
+void task_adc_update(void *parameters)
+{
+    shared_data_type *shared_data = (shared_data_type *) parameters;
+
+    if (HAL_OK == ADC_Poll_Read(&shared_data->adc_value))
+    {
+        shared_data->adc_end_of_conversion = true;
+    }
+    else
+    {
+        LOGGER_LOG("error\n");
+    }
+}
+
+// Requests start of conversion, waits until conversion done
+HAL_StatusTypeDef ADC_Poll_Read(uint16_t *value) {
+    HAL_StatusTypeDef res;
+    uint32_t sum = 0;
+
+    for (int i = 0; i < ADC_AVG_SAMPLES; i++)
+    {
+        if ((res = HAL_ADC_Start(&hadc1)) != HAL_OK)
+        {
+            return res;
+        }
+
+        if ((res = HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY)) != HAL_OK)
+        {
+            return res;
+        }
+
+        sum += HAL_ADC_GetValue(&hadc1);
+        HAL_ADC_Stop(&hadc1);
+    }
+
+    *value = (sum / ADC_AVG_SAMPLES);
+    return HAL_OK;
+}
+
+
+
+/********************** end of file ******************************************/