mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Wed Feb 20 22:31:08 2019 +0000
Revision:
189:f392fc9709a3
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 189:f392fc9709a3 1 /**
AnnaBridge 189:f392fc9709a3 2 ******************************************************************************
AnnaBridge 189:f392fc9709a3 3 * @file stm32h7xx_hal_hsem.c
AnnaBridge 189:f392fc9709a3 4 * @author MCD Application Team
AnnaBridge 189:f392fc9709a3 5 * @brief HSEM HAL module driver.
AnnaBridge 189:f392fc9709a3 6 * This file provides firmware functions to manage the following
AnnaBridge 189:f392fc9709a3 7 * functionalities of the semaphore peripheral:
AnnaBridge 189:f392fc9709a3 8 * + Semaphore Take function (2-Step Procedure) , non blocking
AnnaBridge 189:f392fc9709a3 9 * + Semaphore FastTake function (1-Step Procedure) , non blocking
AnnaBridge 189:f392fc9709a3 10 * + Semaphore Status check
AnnaBridge 189:f392fc9709a3 11 * + Semaphore Clear Key Set and Get
AnnaBridge 189:f392fc9709a3 12 * + Release and release all functions
AnnaBridge 189:f392fc9709a3 13 * + Semaphore notification enabling and disabling and callback functions
AnnaBridge 189:f392fc9709a3 14 * + IRQ handler management
AnnaBridge 189:f392fc9709a3 15 *
AnnaBridge 189:f392fc9709a3 16 *
AnnaBridge 189:f392fc9709a3 17 @verbatim
AnnaBridge 189:f392fc9709a3 18 ==============================================================================
AnnaBridge 189:f392fc9709a3 19 ##### How to use this driver #####
AnnaBridge 189:f392fc9709a3 20 ==============================================================================
AnnaBridge 189:f392fc9709a3 21 [..]
AnnaBridge 189:f392fc9709a3 22 (#)Take a semaphore In 2-Step mode Using function HAL_HSEM_Take. This function takes as parameters :
AnnaBridge 189:f392fc9709a3 23 (++) the semaphore ID from 0 to 31
AnnaBridge 189:f392fc9709a3 24 (++) the process ID from 0 to 255
AnnaBridge 189:f392fc9709a3 25 (#) Fast Take semaphore In 1-Step mode Using function HAL_HSEM_FastTake. This function takes as parameter :
AnnaBridge 189:f392fc9709a3 26 (++) the semaphore ID from 0_ID to 31. Note that the process ID value is implicitly assumed as zero
AnnaBridge 189:f392fc9709a3 27 (#) Check if a semaphore is Taken using function HAL_HSEM_IsSemTaken. This function takes as parameter :
AnnaBridge 189:f392fc9709a3 28 (++) the semaphore ID from 0_ID to 31
AnnaBridge 189:f392fc9709a3 29 (++) It returns 1 if the given semaphore is taken otherwise (Free) zero
AnnaBridge 189:f392fc9709a3 30 (#)Release a semaphore using function with HAL_HSEM_Release. This function takes as parameters :
AnnaBridge 189:f392fc9709a3 31 (++) the semaphore ID from 0 to 31
AnnaBridge 189:f392fc9709a3 32 (++) the process ID from 0 to 255:
AnnaBridge 189:f392fc9709a3 33 (++) Note: If ProcessID and MasterID match, semaphore is freed, and an interrupt
AnnaBridge 189:f392fc9709a3 34 may be generated when enabled (notification activated). If ProcessID or MasterID does not match,
AnnaBridge 189:f392fc9709a3 35 semaphore remains taken (locked)
AnnaBridge 189:f392fc9709a3 36
AnnaBridge 189:f392fc9709a3 37 (#)Release all semaphores at once taken by a given Master using function HAL_HSEM_Release_All
AnnaBridge 189:f392fc9709a3 38 This function takes as parameters :
AnnaBridge 189:f392fc9709a3 39 (++) the Release Key (value from 0 to 0xFFFF) can be Set or Get respectively by
AnnaBridge 189:f392fc9709a3 40 HAL_HSEM_SetClearKey() or HAL_HSEM_GetClearKey functions
AnnaBridge 189:f392fc9709a3 41 (++) the Master ID:
AnnaBridge 189:f392fc9709a3 42 (++) Note: If the Key and MasterID match, all semaphores taken by the given CPU that corresponds
AnnaBridge 189:f392fc9709a3 43 to MasterID will be freed, and an interrupt may be generated when enabled (notification activated). If the
AnnaBridge 189:f392fc9709a3 44 Key or the MasterID doesn't match, semaphores remains taken (locked)
AnnaBridge 189:f392fc9709a3 45
AnnaBridge 189:f392fc9709a3 46 (#)Semaphores Release all key functions:
AnnaBridge 189:f392fc9709a3 47 (++) HAL_HSEM_SetClearKey() to set semaphore release all Key
AnnaBridge 189:f392fc9709a3 48 (++) HAL_HSEM_GetClearKey() to get release all Key
AnnaBridge 189:f392fc9709a3 49 (#)Semaphores notification functions :
AnnaBridge 189:f392fc9709a3 50 (++) HAL_HSEM_ActivateNotification to activate a notification callback on
AnnaBridge 189:f392fc9709a3 51 a given semaphores Mask (bitfield). When one or more semaphores defined by the mask are released
AnnaBridge 189:f392fc9709a3 52 the callback HAL_HSEM_FreeCallback will be asserted giving as parameters a mask of the released
AnnaBridge 189:f392fc9709a3 53 semaphores (bitfield).
AnnaBridge 189:f392fc9709a3 54
AnnaBridge 189:f392fc9709a3 55 (++) HAL_HSEM_DeactivateNotification to deactivate the notification of a given semaphores Mask (bitfield).
AnnaBridge 189:f392fc9709a3 56 (++) See the description of the macro __HAL_HSEM_SEMID_TO_MASK to check how to calculate a semaphore mask
AnnaBridge 189:f392fc9709a3 57 Used by the notification functions
AnnaBridge 189:f392fc9709a3 58 *** HSEM HAL driver macros list ***
AnnaBridge 189:f392fc9709a3 59 =============================================
AnnaBridge 189:f392fc9709a3 60 [..] Below the list of most used macros in HSEM HAL driver.
AnnaBridge 189:f392fc9709a3 61
AnnaBridge 189:f392fc9709a3 62 (+) __HAL_HSEM_SEMID_TO_MASK: Helper macro to convert a Semaphore ID to a Mask.
AnnaBridge 189:f392fc9709a3 63 [..] Example of use :
AnnaBridge 189:f392fc9709a3 64 [..] mask = __HAL_HSEM_SEMID_TO_MASK(8) | __HAL_HSEM_SEMID_TO_MASK(21) | __HAL_HSEM_SEMID_TO_MASK(25).
AnnaBridge 189:f392fc9709a3 65 [..] All next macros take as parameter a semaphore Mask (bitfiled) that can be constructed using __HAL_HSEM_SEMID_TO_MASK as the above example.
AnnaBridge 189:f392fc9709a3 66 (+) __HAL_HSEM_ENABLE_IT: Enable the specified semaphores Mask interrupts.
AnnaBridge 189:f392fc9709a3 67 (+) __HAL_HSEM_DISABLE_IT: Disable the specified semaphores Mask interrupts.
AnnaBridge 189:f392fc9709a3 68 (+) __HAL_HSEM_GET_IT: Checks whether the specified semaphore interrupt has occurred or not.
AnnaBridge 189:f392fc9709a3 69 (+) __HAL_HSEM_GET_FLAG: Get the semaphores status release flags.
AnnaBridge 189:f392fc9709a3 70 (+) __HAL_HSEM_CLEAR_FLAG: Clear the semaphores status release flags.
AnnaBridge 189:f392fc9709a3 71
AnnaBridge 189:f392fc9709a3 72 @endverbatim
AnnaBridge 189:f392fc9709a3 73 ******************************************************************************
AnnaBridge 189:f392fc9709a3 74 * @attention
AnnaBridge 189:f392fc9709a3 75 *
AnnaBridge 189:f392fc9709a3 76 * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
AnnaBridge 189:f392fc9709a3 77 * All rights reserved.</center></h2>
AnnaBridge 189:f392fc9709a3 78 *
AnnaBridge 189:f392fc9709a3 79 * This software component is licensed by ST under BSD 3-Clause license,
AnnaBridge 189:f392fc9709a3 80 * the "License"; You may not use this file except in compliance with the
AnnaBridge 189:f392fc9709a3 81 * License. You may obtain a copy of the License at:
AnnaBridge 189:f392fc9709a3 82 * opensource.org/licenses/BSD-3-Clause
AnnaBridge 189:f392fc9709a3 83 *
AnnaBridge 189:f392fc9709a3 84 ******************************************************************************
AnnaBridge 189:f392fc9709a3 85 */
AnnaBridge 189:f392fc9709a3 86
AnnaBridge 189:f392fc9709a3 87 /* Includes ------------------------------------------------------------------*/
AnnaBridge 189:f392fc9709a3 88 #include "stm32h7xx_hal.h"
AnnaBridge 189:f392fc9709a3 89
AnnaBridge 189:f392fc9709a3 90 /** @addtogroup STM32H7xx_HAL_Driver
AnnaBridge 189:f392fc9709a3 91 * @{
AnnaBridge 189:f392fc9709a3 92 */
AnnaBridge 189:f392fc9709a3 93
AnnaBridge 189:f392fc9709a3 94 /** @defgroup HSEM HSEM
AnnaBridge 189:f392fc9709a3 95 * @brief HSEM HAL module driver
AnnaBridge 189:f392fc9709a3 96 * @{
AnnaBridge 189:f392fc9709a3 97 */
AnnaBridge 189:f392fc9709a3 98
AnnaBridge 189:f392fc9709a3 99 #ifdef HAL_HSEM_MODULE_ENABLED
AnnaBridge 189:f392fc9709a3 100
AnnaBridge 189:f392fc9709a3 101 /* Private typedef -----------------------------------------------------------*/
AnnaBridge 189:f392fc9709a3 102 /* Private define ------------------------------------------------------------*/
AnnaBridge 189:f392fc9709a3 103 /* Private macro -------------------------------------------------------------*/
AnnaBridge 189:f392fc9709a3 104 /* Private variables ---------------------------------------------------------*/
AnnaBridge 189:f392fc9709a3 105 /* Private function prototypes -----------------------------------------------*/
AnnaBridge 189:f392fc9709a3 106 /* Private functions ---------------------------------------------------------*/
AnnaBridge 189:f392fc9709a3 107 /* Exported functions --------------------------------------------------------*/
AnnaBridge 189:f392fc9709a3 108
AnnaBridge 189:f392fc9709a3 109 /** @defgroup HSEM_Exported_Functions HSEM Exported Functions
AnnaBridge 189:f392fc9709a3 110 * @{
AnnaBridge 189:f392fc9709a3 111 */
AnnaBridge 189:f392fc9709a3 112
AnnaBridge 189:f392fc9709a3 113 /** @defgroup HSEM_Exported_Functions_Group1 Take and Release functions
AnnaBridge 189:f392fc9709a3 114 * @brief HSEM Take and Release functions
AnnaBridge 189:f392fc9709a3 115 *
AnnaBridge 189:f392fc9709a3 116 @verbatim
AnnaBridge 189:f392fc9709a3 117 ==============================================================================
AnnaBridge 189:f392fc9709a3 118 ##### HSEM Take and Release functions #####
AnnaBridge 189:f392fc9709a3 119 ==============================================================================
AnnaBridge 189:f392fc9709a3 120 [..] This section provides functions allowing to:
AnnaBridge 189:f392fc9709a3 121 (+) Take a semaphore with 2 Step method
AnnaBridge 189:f392fc9709a3 122 (+) Fast Take a semaphore with 1 Step method
AnnaBridge 189:f392fc9709a3 123 (+) Check semaphore state Taken or not
AnnaBridge 189:f392fc9709a3 124 (+) Release a semaphore
AnnaBridge 189:f392fc9709a3 125 (+) Release all semaphore at once
AnnaBridge 189:f392fc9709a3 126
AnnaBridge 189:f392fc9709a3 127 @endverbatim
AnnaBridge 189:f392fc9709a3 128 * @{
AnnaBridge 189:f392fc9709a3 129 */
AnnaBridge 189:f392fc9709a3 130
AnnaBridge 189:f392fc9709a3 131
AnnaBridge 189:f392fc9709a3 132 /**
AnnaBridge 189:f392fc9709a3 133 * @brief Take a semaphore in 2 Step mode.
AnnaBridge 189:f392fc9709a3 134 * @param SemID: semaphore ID from 0 to 31
AnnaBridge 189:f392fc9709a3 135 * @param ProcessID: Process ID from 0 to 255
AnnaBridge 189:f392fc9709a3 136 * @retval HAL status
AnnaBridge 189:f392fc9709a3 137 */
AnnaBridge 189:f392fc9709a3 138 HAL_StatusTypeDef HAL_HSEM_Take(uint32_t SemID, uint32_t ProcessID)
AnnaBridge 189:f392fc9709a3 139 {
AnnaBridge 189:f392fc9709a3 140 /* Check the parameters */
AnnaBridge 189:f392fc9709a3 141 assert_param(IS_HSEM_SEMID(SemID));
AnnaBridge 189:f392fc9709a3 142 assert_param(IS_HSEM_PROCESSID(ProcessID));
AnnaBridge 189:f392fc9709a3 143
AnnaBridge 189:f392fc9709a3 144 /* First step write R register with MasterID, processID and take bit=1*/
AnnaBridge 189:f392fc9709a3 145 HSEM->R[SemID] = (ProcessID | HSEM_CR_COREID_CURRENT | HSEM_R_LOCK);
AnnaBridge 189:f392fc9709a3 146
AnnaBridge 189:f392fc9709a3 147 /* second step : read the R register . Take achieved if MasterID and processID match and take bit set to 1 */
AnnaBridge 189:f392fc9709a3 148 if (HSEM->R[SemID] == (ProcessID | HSEM_CR_COREID_CURRENT | HSEM_R_LOCK))
AnnaBridge 189:f392fc9709a3 149 {
AnnaBridge 189:f392fc9709a3 150 /*take success when MasterID and ProcessID match and take bit set*/
AnnaBridge 189:f392fc9709a3 151 return HAL_OK;
AnnaBridge 189:f392fc9709a3 152 }
AnnaBridge 189:f392fc9709a3 153
AnnaBridge 189:f392fc9709a3 154 /* Semaphore take fails*/
AnnaBridge 189:f392fc9709a3 155 return HAL_ERROR;
AnnaBridge 189:f392fc9709a3 156 }
AnnaBridge 189:f392fc9709a3 157
AnnaBridge 189:f392fc9709a3 158 /**
AnnaBridge 189:f392fc9709a3 159 * @brief Fast Take a semaphore with 1 Step mode.
AnnaBridge 189:f392fc9709a3 160 * @param SemID: semaphore ID from 0 to 31
AnnaBridge 189:f392fc9709a3 161 * @retval HAL status
AnnaBridge 189:f392fc9709a3 162 */
AnnaBridge 189:f392fc9709a3 163 HAL_StatusTypeDef HAL_HSEM_FastTake(uint32_t SemID)
AnnaBridge 189:f392fc9709a3 164 {
AnnaBridge 189:f392fc9709a3 165 /* Check the parameters */
AnnaBridge 189:f392fc9709a3 166 assert_param(IS_HSEM_SEMID(SemID));
AnnaBridge 189:f392fc9709a3 167
AnnaBridge 189:f392fc9709a3 168 /* Read the RLR register to take the semaphore */
AnnaBridge 189:f392fc9709a3 169 if (HSEM->RLR[SemID] == (HSEM_CR_COREID_CURRENT | HSEM_RLR_LOCK))
AnnaBridge 189:f392fc9709a3 170 {
AnnaBridge 189:f392fc9709a3 171 /*take success when MasterID match and take bit set*/
AnnaBridge 189:f392fc9709a3 172 return HAL_OK;
AnnaBridge 189:f392fc9709a3 173 }
AnnaBridge 189:f392fc9709a3 174
AnnaBridge 189:f392fc9709a3 175 /* Semaphore take fails */
AnnaBridge 189:f392fc9709a3 176 return HAL_ERROR;
AnnaBridge 189:f392fc9709a3 177 }
AnnaBridge 189:f392fc9709a3 178 /**
AnnaBridge 189:f392fc9709a3 179 * @brief Check semaphore state Taken or not.
AnnaBridge 189:f392fc9709a3 180 * @param SemID: semaphore ID
AnnaBridge 189:f392fc9709a3 181 * @retval HAL HSEM state
AnnaBridge 189:f392fc9709a3 182 */
AnnaBridge 189:f392fc9709a3 183 uint32_t HAL_HSEM_IsSemTaken(uint32_t SemID)
AnnaBridge 189:f392fc9709a3 184 {
AnnaBridge 189:f392fc9709a3 185 return (((HSEM->R[SemID] & HSEM_R_LOCK) != 0U) ? 1UL : 0UL);
AnnaBridge 189:f392fc9709a3 186 }
AnnaBridge 189:f392fc9709a3 187
AnnaBridge 189:f392fc9709a3 188
AnnaBridge 189:f392fc9709a3 189 /**
AnnaBridge 189:f392fc9709a3 190 * @brief Release a semaphore.
AnnaBridge 189:f392fc9709a3 191 * @param SemID: semaphore ID from 0 to 31
AnnaBridge 189:f392fc9709a3 192 * @param ProcessID: Process ID from 0 to 255
AnnaBridge 189:f392fc9709a3 193 * @retval None
AnnaBridge 189:f392fc9709a3 194 */
AnnaBridge 189:f392fc9709a3 195 void HAL_HSEM_Release(uint32_t SemID, uint32_t ProcessID)
AnnaBridge 189:f392fc9709a3 196 {
AnnaBridge 189:f392fc9709a3 197 /* Check the parameters */
AnnaBridge 189:f392fc9709a3 198 assert_param(IS_HSEM_SEMID(SemID));
AnnaBridge 189:f392fc9709a3 199 assert_param(IS_HSEM_PROCESSID(ProcessID));
AnnaBridge 189:f392fc9709a3 200
AnnaBridge 189:f392fc9709a3 201 /* Clear the semaphore by writing to the R register : the MasterID , the processID and take bit = 0 */
AnnaBridge 189:f392fc9709a3 202 HSEM->R[SemID] = (ProcessID | HSEM_CR_COREID_CURRENT);
AnnaBridge 189:f392fc9709a3 203
AnnaBridge 189:f392fc9709a3 204 }
AnnaBridge 189:f392fc9709a3 205
AnnaBridge 189:f392fc9709a3 206 /**
AnnaBridge 189:f392fc9709a3 207 * @brief Release All semaphore used by a given Master .
AnnaBridge 189:f392fc9709a3 208 * @param Key: Semaphore Key , value from 0 to 0xFFFF
AnnaBridge 189:f392fc9709a3 209 * @param CoreID: CoreID of the CPU that is using semaphores to be released
AnnaBridge 189:f392fc9709a3 210 * @retval None
AnnaBridge 189:f392fc9709a3 211 */
AnnaBridge 189:f392fc9709a3 212 void HAL_HSEM_ReleaseAll(uint32_t Key, uint32_t CoreID)
AnnaBridge 189:f392fc9709a3 213 {
AnnaBridge 189:f392fc9709a3 214 assert_param(IS_HSEM_KEY(Key));
AnnaBridge 189:f392fc9709a3 215 assert_param(IS_HSEM_COREID(CoreID));
AnnaBridge 189:f392fc9709a3 216
AnnaBridge 189:f392fc9709a3 217 HSEM->CR = ((Key << HSEM_CR_KEY_Pos) | (CoreID << HSEM_CR_COREID_Pos));
AnnaBridge 189:f392fc9709a3 218 }
AnnaBridge 189:f392fc9709a3 219
AnnaBridge 189:f392fc9709a3 220 /**
AnnaBridge 189:f392fc9709a3 221 * @}
AnnaBridge 189:f392fc9709a3 222 */
AnnaBridge 189:f392fc9709a3 223
AnnaBridge 189:f392fc9709a3 224 /** @defgroup HSEM_Exported_Functions_Group2 HSEM Set and Get Key functions
AnnaBridge 189:f392fc9709a3 225 * @brief HSEM Set and Get Key functions.
AnnaBridge 189:f392fc9709a3 226 *
AnnaBridge 189:f392fc9709a3 227 @verbatim
AnnaBridge 189:f392fc9709a3 228 ==============================================================================
AnnaBridge 189:f392fc9709a3 229 ##### HSEM Set and Get Key functions #####
AnnaBridge 189:f392fc9709a3 230 ==============================================================================
AnnaBridge 189:f392fc9709a3 231 [..] This section provides functions allowing to:
AnnaBridge 189:f392fc9709a3 232 (+) Set semaphore Key
AnnaBridge 189:f392fc9709a3 233 (+) Get semaphore Key
AnnaBridge 189:f392fc9709a3 234 @endverbatim
AnnaBridge 189:f392fc9709a3 235
AnnaBridge 189:f392fc9709a3 236 * @{
AnnaBridge 189:f392fc9709a3 237 */
AnnaBridge 189:f392fc9709a3 238
AnnaBridge 189:f392fc9709a3 239 /**
AnnaBridge 189:f392fc9709a3 240 * @brief Set semaphore Key .
AnnaBridge 189:f392fc9709a3 241 * @param Key: Semaphore Key , value from 0 to 0xFFFF
AnnaBridge 189:f392fc9709a3 242 * @retval None
AnnaBridge 189:f392fc9709a3 243 */
AnnaBridge 189:f392fc9709a3 244 void HAL_HSEM_SetClearKey(uint32_t Key)
AnnaBridge 189:f392fc9709a3 245 {
AnnaBridge 189:f392fc9709a3 246 assert_param(IS_HSEM_KEY(Key));
AnnaBridge 189:f392fc9709a3 247
AnnaBridge 189:f392fc9709a3 248 MODIFY_REG(HSEM->KEYR, HSEM_KEYR_KEY, (Key << HSEM_KEYR_KEY_Pos));
AnnaBridge 189:f392fc9709a3 249
AnnaBridge 189:f392fc9709a3 250 }
AnnaBridge 189:f392fc9709a3 251
AnnaBridge 189:f392fc9709a3 252 /**
AnnaBridge 189:f392fc9709a3 253 * @brief Get semaphore Key .
AnnaBridge 189:f392fc9709a3 254 * @retval Semaphore Key , value from 0 to 0xFFFF
AnnaBridge 189:f392fc9709a3 255 */
AnnaBridge 189:f392fc9709a3 256 uint32_t HAL_HSEM_GetClearKey(void)
AnnaBridge 189:f392fc9709a3 257 {
AnnaBridge 189:f392fc9709a3 258 return (HSEM->KEYR >> HSEM_KEYR_KEY_Pos);
AnnaBridge 189:f392fc9709a3 259 }
AnnaBridge 189:f392fc9709a3 260
AnnaBridge 189:f392fc9709a3 261 /**
AnnaBridge 189:f392fc9709a3 262 * @}
AnnaBridge 189:f392fc9709a3 263 */
AnnaBridge 189:f392fc9709a3 264
AnnaBridge 189:f392fc9709a3 265 /** @defgroup HSEM_Exported_Functions_Group3 HSEM IRQ handler management
AnnaBridge 189:f392fc9709a3 266 * @brief HSEM Notification functions.
AnnaBridge 189:f392fc9709a3 267 *
AnnaBridge 189:f392fc9709a3 268 @verbatim
AnnaBridge 189:f392fc9709a3 269 ==============================================================================
AnnaBridge 189:f392fc9709a3 270 ##### HSEM IRQ handler management and Notification functions #####
AnnaBridge 189:f392fc9709a3 271 ==============================================================================
AnnaBridge 189:f392fc9709a3 272 [..] This section provides HSEM IRQ handler and Notification function.
AnnaBridge 189:f392fc9709a3 273
AnnaBridge 189:f392fc9709a3 274 @endverbatim
AnnaBridge 189:f392fc9709a3 275 * @{
AnnaBridge 189:f392fc9709a3 276 */
AnnaBridge 189:f392fc9709a3 277
AnnaBridge 189:f392fc9709a3 278 /**
AnnaBridge 189:f392fc9709a3 279 * @brief Activate Semaphore release Notification for a given Semaphores Mask .
AnnaBridge 189:f392fc9709a3 280 * @param SemMask: Mask of Released semaphores
AnnaBridge 189:f392fc9709a3 281 * @retval Semaphore Key
AnnaBridge 189:f392fc9709a3 282 */
AnnaBridge 189:f392fc9709a3 283 void HAL_HSEM_ActivateNotification(uint32_t SemMask)
AnnaBridge 189:f392fc9709a3 284 {
AnnaBridge 189:f392fc9709a3 285 HSEM_COMMON->IER |= SemMask;
AnnaBridge 189:f392fc9709a3 286 }
AnnaBridge 189:f392fc9709a3 287
AnnaBridge 189:f392fc9709a3 288 /**
AnnaBridge 189:f392fc9709a3 289 * @brief Deactivate Semaphore release Notification for a given Semaphores Mask .
AnnaBridge 189:f392fc9709a3 290 * @param SemMask: Mask of Released semaphores
AnnaBridge 189:f392fc9709a3 291 * @retval Semaphore Key
AnnaBridge 189:f392fc9709a3 292 */
AnnaBridge 189:f392fc9709a3 293 void HAL_HSEM_DeactivateNotification(uint32_t SemMask)
AnnaBridge 189:f392fc9709a3 294 {
AnnaBridge 189:f392fc9709a3 295 HSEM_COMMON->IER &= ~SemMask;
AnnaBridge 189:f392fc9709a3 296 }
AnnaBridge 189:f392fc9709a3 297
AnnaBridge 189:f392fc9709a3 298 /**
AnnaBridge 189:f392fc9709a3 299 * @brief This function handles HSEM interrupt request
AnnaBridge 189:f392fc9709a3 300 * @retval None
AnnaBridge 189:f392fc9709a3 301 */
AnnaBridge 189:f392fc9709a3 302 void HAL_HSEM_IRQHandler(void)
AnnaBridge 189:f392fc9709a3 303 {
AnnaBridge 189:f392fc9709a3 304 uint32_t statusreg;
AnnaBridge 189:f392fc9709a3 305
AnnaBridge 189:f392fc9709a3 306 /* Get the list of masked freed semaphores*/
AnnaBridge 189:f392fc9709a3 307 statusreg = HSEM_COMMON->MISR;
AnnaBridge 189:f392fc9709a3 308
AnnaBridge 189:f392fc9709a3 309 /*Disable Interrupts*/
AnnaBridge 189:f392fc9709a3 310 HSEM_COMMON->IER &= ~((uint32_t)statusreg);
AnnaBridge 189:f392fc9709a3 311
AnnaBridge 189:f392fc9709a3 312 /*Clear Flags*/
AnnaBridge 189:f392fc9709a3 313 HSEM_COMMON->ICR = ((uint32_t)statusreg);
AnnaBridge 189:f392fc9709a3 314
AnnaBridge 189:f392fc9709a3 315 /* Call FreeCallback */
AnnaBridge 189:f392fc9709a3 316 HAL_HSEM_FreeCallback(statusreg);
AnnaBridge 189:f392fc9709a3 317 }
AnnaBridge 189:f392fc9709a3 318
AnnaBridge 189:f392fc9709a3 319 /**
AnnaBridge 189:f392fc9709a3 320 * @brief Semaphore Released Callback.
AnnaBridge 189:f392fc9709a3 321 * @param SemMask: Mask of Released semaphores
AnnaBridge 189:f392fc9709a3 322 * @retval None
AnnaBridge 189:f392fc9709a3 323 */
AnnaBridge 189:f392fc9709a3 324 __weak void HAL_HSEM_FreeCallback(uint32_t SemMask)
AnnaBridge 189:f392fc9709a3 325 {
AnnaBridge 189:f392fc9709a3 326 /* Prevent unused argument(s) compilation warning */
AnnaBridge 189:f392fc9709a3 327 UNUSED(SemMask);
AnnaBridge 189:f392fc9709a3 328
AnnaBridge 189:f392fc9709a3 329 /* NOTE : This function should not be modified, when the callback is needed,
AnnaBridge 189:f392fc9709a3 330 the HAL_HSEM_FreeCallback can be implemented in the user file
AnnaBridge 189:f392fc9709a3 331 */
AnnaBridge 189:f392fc9709a3 332 }
AnnaBridge 189:f392fc9709a3 333
AnnaBridge 189:f392fc9709a3 334 /**
AnnaBridge 189:f392fc9709a3 335 * @}
AnnaBridge 189:f392fc9709a3 336 */
AnnaBridge 189:f392fc9709a3 337
AnnaBridge 189:f392fc9709a3 338 /**
AnnaBridge 189:f392fc9709a3 339 * @}
AnnaBridge 189:f392fc9709a3 340 */
AnnaBridge 189:f392fc9709a3 341
AnnaBridge 189:f392fc9709a3 342 #endif /* HAL_HSEM_MODULE_ENABLED */
AnnaBridge 189:f392fc9709a3 343 /**
AnnaBridge 189:f392fc9709a3 344 * @}
AnnaBridge 189:f392fc9709a3 345 */
AnnaBridge 189:f392fc9709a3 346
AnnaBridge 189:f392fc9709a3 347 /**
AnnaBridge 189:f392fc9709a3 348 * @}
AnnaBridge 189:f392fc9709a3 349 */
AnnaBridge 189:f392fc9709a3 350
AnnaBridge 189:f392fc9709a3 351 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/