summaryrefslogtreecommitdiffstats
path: root/bsps/arm/stm32h7/hal/stm32h7xx_hal_dts.c
diff options
context:
space:
mode:
authorKarel Gardas <karel@functional.vision>2023-07-19 18:04:28 +0200
committerKarel Gardas <karel@functional.vision>2023-07-31 15:15:09 +0200
commitf728eb4dc4e19fce942f4762882f9a2aa06087b9 (patch)
treed3d85d6d98c286580ffc2795543ffc2848eeff41 /bsps/arm/stm32h7/hal/stm32h7xx_hal_dts.c
parentbsps/arm: fix nested extern decl. warnings brought by CMSIS files update (diff)
downloadrtems-f728eb4dc4e19fce942f4762882f9a2aa06087b9.tar.bz2
bsps/stm32h7: update STM32 H7 HAL
This patch updates STM32 H7 HAL source files. The files are taken from two STM projects from their github.com repositories: (i) https://github.com/STMicroelectronics/stm32h7xx_hal_driver.git The project files are still available under BSD-3 license and the version/commit used is: d5fc8d05fc16fa2a2a2f948cf6c6ab39e78358e1 which represents post Release v1.11.1 development tree. (ii) https://github.com/STMicroelectronics/cmsis_device_h7.git The project files were re-licensed from previous BSD-3 to Apache 2.0 license. Fortunately the project does not contain NOTICE file so no need to do anything special when used in RTEMS. The project version/commit imported is: 6d5ef249bec5177e0e2a0880ed62df2132874d99 which is code-wise Release v1.10.3 exactly.
Diffstat (limited to 'bsps/arm/stm32h7/hal/stm32h7xx_hal_dts.c')
-rw-r--r--bsps/arm/stm32h7/hal/stm32h7xx_hal_dts.c256
1 files changed, 204 insertions, 52 deletions
diff --git a/bsps/arm/stm32h7/hal/stm32h7xx_hal_dts.c b/bsps/arm/stm32h7/hal/stm32h7xx_hal_dts.c
index d2f9ededf6..9f122a49bd 100644
--- a/bsps/arm/stm32h7/hal/stm32h7xx_hal_dts.c
+++ b/bsps/arm/stm32h7/hal/stm32h7xx_hal_dts.c
@@ -11,6 +11,17 @@
* + Peripheral Control functions
* + Peripheral State functions
*
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2017 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
@verbatim
================================================================================
##### DTS Peripheral features #####
@@ -27,17 +38,6 @@
@endverbatim
******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under BSD 3-Clause license,
- * the "License"; You may not use this file except in compliance with the
- * License. You may obtain a copy of the License at:
- * opensource.org/licenses/BSD-3-Clause
- *
- ******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
@@ -52,7 +52,6 @@
#if defined(DTS)
/** @defgroup DTS DTS
- * @ingroup RTEMSBSPsARMSTM32H7
* @brief DTS HAL module driver
* @{
*/
@@ -77,21 +76,26 @@
*/
#define TS_TIMEOUT_MS (5UL)
+/* @brief DTS factory temperatures
+ * @note Unit: degree Celsius
+ */
+#define DTS_FACTORY_TEMPERATURE1 (30UL)
+#define DTS_FACTORY_TEMPERATURE2 (130UL)
+
+/**
+ * @}
+ */
+
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
-#if (USE_HAL_DTS_REGISTER_CALLBACKS == 1)
-static void DTS_ResetCallback(DTS_HandleTypeDef *hdts);
-#endif /* USE_HAL_DTS_REGISTER_CALLBACKS */
/* Exported functions --------------------------------------------------------*/
/** @defgroup DTS_Exported_Functions DTS Exported Functions
- * @ingroup RTEMSBSPsARMSTM32H7
* @{
*/
/** @defgroup DTS_Exported_Functions_Group1 Initialization/de-initialization functions
- * @ingroup RTEMSBSPsARMSTM32H7
* @brief Initialization and de-initialization functions.
*
@verbatim
@@ -130,8 +134,13 @@ HAL_StatusTypeDef HAL_DTS_Init(DTS_HandleTypeDef *hdts)
if (hdts->State == HAL_DTS_STATE_RESET)
{
#if (USE_HAL_DTS_REGISTER_CALLBACKS == 1)
- /* Reset interrupt callbacks to legacy weak callbacks */
- DTS_ResetCallback(hdts);
+ /* Reset the DTS callback to the legacy weak callbacks */
+ hdts->EndCallback = HAL_DTS_EndCallback; /* End measure Callback */
+ hdts->LowCallback = HAL_DTS_LowCallback; /* low threshold Callback */
+ hdts->HighCallback = HAL_DTS_HighCallback; /* high threshold Callback */
+ hdts->AsyncEndCallback = HAL_DTS_AsyncEndCallback; /* Asynchronous end of measure Callback */
+ hdts->AsyncLowCallback = HAL_DTS_AsyncLowCallback; /* Asynchronous low threshold Callback */
+ hdts->AsyncHighCallback = HAL_DTS_AsyncHighCallback; /* Asynchronous high threshold Callback */
if (hdts->MspInitCallback == NULL)
{
@@ -276,12 +285,185 @@ __weak void HAL_DTS_MspDeInit(DTS_HandleTypeDef *hdts)
*/
}
+#if (USE_HAL_DTS_REGISTER_CALLBACKS == 1)
+/**
+ * @brief Register a user DTS callback to be used instead of the weak predefined callback.
+ * @param hdts DTS handle.
+ * @param CallbackID ID of the callback to be registered.
+ * This parameter can be one of the following values:
+ * @arg @ref HAL_DTS_MEAS_COMPLETE_CB_ID measure complete callback ID.
+ * @arg @ref HAL_DTS_ASYNC_MEAS_COMPLETE_CB_ID asynchronous measure complete callback ID.
+ * @arg @ref HAL_DTS_LOW_THRESHOLD_CB_ID low threshold detection callback ID.
+ * @arg @ref HAL_DTS_ASYNC_LOW_THRESHOLD_CB_ID asynchronous low threshold detection callback ID.
+ * @arg @ref HAL_DTS_HIGH_THRESHOLD_CB_ID high threshold detection callback ID.
+ * @arg @ref HAL_DTS_ASYNC_HIGH_THRESHOLD_CB_ID asynchronous high threshold detection callback ID.
+ * @arg @ref HAL_DTS_MSPINIT_CB_ID MSP init callback ID.
+ * @arg @ref HAL_DTS_MSPDEINIT_CB_ID MSP de-init callback ID.
+ * @param pCallback pointer to the callback function.
+ * @retval HAL status.
+ */
+HAL_StatusTypeDef HAL_DTS_RegisterCallback(DTS_HandleTypeDef *hdts,
+ HAL_DTS_CallbackIDTypeDef CallbackID,
+ pDTS_CallbackTypeDef pCallback)
+{
+ HAL_StatusTypeDef status = HAL_OK;
+
+ /* Check parameters */
+ if (pCallback == NULL)
+ {
+ /* Update status */
+ status = HAL_ERROR;
+ }
+ else
+ {
+ if (hdts->State == HAL_DTS_STATE_READY)
+ {
+ switch (CallbackID)
+ {
+ case HAL_DTS_MEAS_COMPLETE_CB_ID :
+ hdts->EndCallback = pCallback;
+ break;
+ case HAL_DTS_ASYNC_MEAS_COMPLETE_CB_ID :
+ hdts->AsyncEndCallback = pCallback;
+ break;
+ case HAL_DTS_LOW_THRESHOLD_CB_ID :
+ hdts->LowCallback = pCallback;
+ break;
+ case HAL_DTS_ASYNC_LOW_THRESHOLD_CB_ID :
+ hdts->AsyncLowCallback = pCallback;
+ break;
+ case HAL_DTS_HIGH_THRESHOLD_CB_ID :
+ hdts->HighCallback = pCallback;
+ break;
+ case HAL_DTS_ASYNC_HIGH_THRESHOLD_CB_ID :
+ hdts->AsyncHighCallback = pCallback;
+ break;
+ case HAL_DTS_MSPINIT_CB_ID :
+ hdts->MspInitCallback = pCallback;
+ break;
+ case HAL_DTS_MSPDEINIT_CB_ID :
+ hdts->MspDeInitCallback = pCallback;
+ break;
+ default :
+ /* Update status */
+ status = HAL_ERROR;
+ break;
+ }
+ }
+ else if (hdts->State == HAL_DTS_STATE_RESET)
+ {
+ switch (CallbackID)
+ {
+ case HAL_DTS_MSPINIT_CB_ID :
+ hdts->MspInitCallback = pCallback;
+ break;
+ case HAL_DTS_MSPDEINIT_CB_ID :
+ hdts->MspDeInitCallback = pCallback;
+ break;
+ default :
+ /* Update status */
+ status = HAL_ERROR;
+ break;
+ }
+ }
+ else
+ {
+ /* Update status */
+ status = HAL_ERROR;
+ }
+ }
+
+ /* Return function status */
+ return status;
+}
+
+/**
+ * @brief Unregister a user DTS callback.
+ * DTS callback is redirected to the weak predefined callback.
+ * @param hdts DTS handle.
+ * @param CallbackID ID of the callback to be unregistered.
+ * This parameter can be one of the following values:
+ * @arg @ref HAL_DTS_MEAS_COMPLETE_CB_ID measure complete callback ID.
+ * @arg @ref HAL_DTS_ASYNC_MEAS_COMPLETE_CB_ID asynchronous measure complete callback ID.
+ * @arg @ref HAL_DTS_LOW_THRESHOLD_CB_ID low threshold detection callback ID.
+ * @arg @ref HAL_DTS_ASYNC_LOW_THRESHOLD_CB_ID asynchronous low threshold detection callback ID.
+ * @arg @ref HAL_DTS_HIGH_THRESHOLD_CB_ID high threshold detection callback ID.
+ * @arg @ref HAL_DTS_ASYNC_HIGH_THRESHOLD_CB_ID asynchronous high threshold detection callback ID.
+ * @arg @ref HAL_DTS_MSPINIT_CB_ID MSP init callback ID.
+ * @arg @ref HAL_DTS_MSPDEINIT_CB_ID MSP de-init callback ID.
+ * @retval HAL status.
+ */
+HAL_StatusTypeDef HAL_DTS_UnRegisterCallback(DTS_HandleTypeDef *hdts,
+ HAL_DTS_CallbackIDTypeDef CallbackID)
+{
+ HAL_StatusTypeDef status = HAL_OK;
+
+ if (hdts->State == HAL_DTS_STATE_READY)
+ {
+ switch (CallbackID)
+ {
+ case HAL_DTS_MEAS_COMPLETE_CB_ID :
+ hdts->EndCallback = HAL_DTS_EndCallback;
+ break;
+ case HAL_DTS_ASYNC_MEAS_COMPLETE_CB_ID :
+ hdts->AsyncEndCallback = HAL_DTS_AsyncEndCallback;
+ break;
+ case HAL_DTS_LOW_THRESHOLD_CB_ID :
+ hdts->LowCallback = HAL_DTS_LowCallback;
+ break;
+ case HAL_DTS_ASYNC_LOW_THRESHOLD_CB_ID :
+ hdts->AsyncLowCallback = HAL_DTS_AsyncLowCallback;
+ break;
+ case HAL_DTS_HIGH_THRESHOLD_CB_ID :
+ hdts->HighCallback = HAL_DTS_HighCallback;
+ break;
+ case HAL_DTS_ASYNC_HIGH_THRESHOLD_CB_ID :
+ hdts->AsyncHighCallback = HAL_DTS_AsyncHighCallback;
+ break;
+ case HAL_DTS_MSPINIT_CB_ID :
+ hdts->MspInitCallback = HAL_DTS_MspInit;
+ break;
+ case HAL_DTS_MSPDEINIT_CB_ID :
+ hdts->MspDeInitCallback = HAL_DTS_MspDeInit;
+ break;
+ default :
+ /* Update status */
+ status = HAL_ERROR;
+ break;
+ }
+ }
+ else if (hdts->State == HAL_DTS_STATE_RESET)
+ {
+ switch (CallbackID)
+ {
+ case HAL_DTS_MSPINIT_CB_ID :
+ hdts->MspInitCallback = HAL_DTS_MspInit;
+ break;
+ case HAL_DTS_MSPDEINIT_CB_ID :
+ hdts->MspDeInitCallback = HAL_DTS_MspDeInit;
+ break;
+ default :
+ /* Update status */
+ status = HAL_ERROR;
+ break;
+ }
+ }
+ else
+ {
+ /* Update status */
+ status = HAL_ERROR;
+ }
+
+ /* Return function status */
+ return status;
+}
+#endif /* USE_HAL_DTS_REGISTER_CALLBACKS */
+
/**
* @}
*/
/** @defgroup DTS_Exported_Functions_Group2 Start-Stop operation functions
- * @ingroup RTEMSBSPsARMSTM32H7
* @brief Start-Stop operation functions.
*
@verbatim
@@ -538,11 +720,11 @@ HAL_StatusTypeDef HAL_DTS_GetTemperature(DTS_HandleTypeDef *hdts, int32_t *Tempe
if (t0_temp == 0UL)
{
- t0_temp = 30UL; /* 30 deg C */
+ t0_temp = DTS_FACTORY_TEMPERATURE1; /* 30 deg C */
}
else if (t0_temp == 1UL)
{
- t0_temp = 110UL; /* 110 deg C */
+ t0_temp = DTS_FACTORY_TEMPERATURE2; /* 130 deg C */
}
else
{
@@ -748,7 +930,6 @@ __weak void HAL_DTS_AsyncHighCallback(DTS_HandleTypeDef *hdts)
*/
/** @defgroup DTS_Exported_Functions_Group3 Peripheral State functions
- * @ingroup RTEMSBSPsARMSTM32H7
* @brief Peripheral State functions.
*
@verbatim
@@ -786,34 +967,6 @@ HAL_DTS_StateTypeDef HAL_DTS_GetState(DTS_HandleTypeDef *hdts)
* @}
*/
-/* Private functions ---------------------------------------------------------*/
-
-/** @defgroup DTS_Private_Functions DTS Private Functions
- * @ingroup RTEMSBSPsARMSTM32H7
- * @{
- */
-#if (USE_HAL_DTS_REGISTER_CALLBACKS == 1)
-/**
- * @brief Reset interrupt callbacks to the legacy weak callbacks.
- * @param hdts pointer to a DTS_HandleTypeDef structure that contains
- * the configuration information for DTS module.
- * @retval None
- */
-static void DTS_ResetCallback(DTS_HandleTypeDef *hdts)
-{
- /* Reset the DTS callback to the legacy weak callbacks */
- hdts->DTS_EndCallback = HAL_DTS_EndCallback; /* End measure Callback */
- hdts->DTS_LowCallback = HAL_DTS_LowCallback; /* low threshold Callback */
- hdts->DTS_HighCallback = HAL_DTS_HighCallback; /* high threshold Callback */
- hdts->DTS_AsyncEndCallback = HAL_DTS_AsyncEndCallback; /* Asynchronous end of measure Callback */
- hdts->DTS_AsyncLowCallback = HAL_DTS_AsyncLowCallback; /* Asynchronous low threshold Callback */
- hdts->DTS_AsyncHighCallback = HAL_DTS_AsyncHighCallback; /* Asynchronous high threshold Callback */
-}
-#endif /* USE_HAL_DTS_REGISTER_CALLBACKS */
-/**
- * @}
- */
-
/**
* @}
*/
@@ -826,4 +979,3 @@ static void DTS_ResetCallback(DTS_HandleTypeDef *hdts)
* @}
*/
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/