STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
stm32h7xx_hal_hsem.h
Go to the documentation of this file.
1/**
2 ******************************************************************************
3 * @file stm32h7xx_hal_hsem.h
4 * @author MCD Application Team
5 * @brief Header file of HSEM HAL module.
6 ******************************************************************************
7 * @attention
8 *
9 * Copyright (c) 2017 STMicroelectronics.
10 * All rights reserved.
11 *
12 * This software is licensed under terms that can be found in the LICENSE file
13 * in the root directory of this software component.
14 * If no LICENSE file comes with this software, it is provided AS-IS.
15 *
16 ******************************************************************************
17 */
18
19/* Define to prevent recursive inclusion -------------------------------------*/
20#ifndef STM32H7xx_HAL_HSEM_H
21#define STM32H7xx_HAL_HSEM_H
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
27/* Includes ------------------------------------------------------------------*/
28#include "stm32h7xx_hal_def.h"
29
30/** @addtogroup STM32H7xx_HAL_Driver
31 * @{
32 */
33
34/** @addtogroup HSEM
35 * @{
36 */
37
38/* Exported macro ------------------------------------------------------------*/
39/** @defgroup HSEM_Exported_Macros HSEM Exported Macros
40 * @{
41 */
42
43/**
44 * @brief SemID to mask helper Macro.
45 * @param __SEMID__: semaphore ID from 0 to 31
46 * @retval Semaphore Mask.
47 */
48#define __HAL_HSEM_SEMID_TO_MASK(__SEMID__) (1 << (__SEMID__))
49
50/**
51 * @brief Enables the specified HSEM interrupts.
52 * @param __SEM_MASK__: semaphores Mask
53 * @retval None.
54 */
55#if defined(DUAL_CORE)
56#define __HAL_HSEM_ENABLE_IT(__SEM_MASK__) ((((SCB->CPUID & 0x000000F0) >> 4 )== 0x7) ? \
57 (HSEM->C1IER |= (__SEM_MASK__)) : \
58 (HSEM->C2IER |= (__SEM_MASK__)))
59#else
60#define __HAL_HSEM_ENABLE_IT(__SEM_MASK__) (HSEM->C1IER |= (__SEM_MASK__))
61#endif /* DUAL_CORE */
62/**
63 * @brief Disables the specified HSEM interrupts.
64 * @param __SEM_MASK__: semaphores Mask
65 * @retval None.
66 */
67#if defined(DUAL_CORE)
68#define __HAL_HSEM_DISABLE_IT(__SEM_MASK__) ((((SCB->CPUID & 0x000000F0) >> 4 )== 0x7) ? \
69 (HSEM->C1IER &= ~(__SEM_MASK__)) : \
70 (HSEM->C2IER &= ~(__SEM_MASK__)))
71#else
72#define __HAL_HSEM_DISABLE_IT(__SEM_MASK__) (HSEM->C1IER &= ~(__SEM_MASK__))
73#endif /* DUAL_CORE */
74
75/**
76 * @brief Checks whether interrupt has occurred or not for semaphores specified by a mask.
77 * @param __SEM_MASK__: semaphores Mask
78 * @retval semaphores Mask : Semaphores where an interrupt occurred.
79 */
80#if defined(DUAL_CORE)
81#define __HAL_HSEM_GET_IT(__SEM_MASK__) ((((SCB->CPUID & 0x000000F0) >> 4 )== 0x7) ? \
82 ((__SEM_MASK__) & HSEM->C1MISR) : \
83 ((__SEM_MASK__) & HSEM->C2MISR))
84#else
85#define __HAL_HSEM_GET_IT(__SEM_MASK__) ((__SEM_MASK__) & HSEM->C1MISR)
86#endif /* DUAL_CORE */
87
88/**
89 * @brief Get the semaphores release status flags.
90 * @param __SEM_MASK__: semaphores Mask
91 * @retval semaphores Mask : Semaphores where Release flags rise.
92 */
93#if defined(DUAL_CORE)
94#define __HAL_HSEM_GET_FLAG(__SEM_MASK__) ((((SCB->CPUID & 0x000000F0) >> 4 )== 0x7) ? \
95 (__SEM_MASK__) & HSEM->C1ISR : \
96 (__SEM_MASK__) & HSEM->C2ISR)
97#else
98#define __HAL_HSEM_GET_FLAG(__SEM_MASK__) ((__SEM_MASK__) & HSEM->C1ISR)
99#endif /* DUAL_CORE */
100
101/**
102 * @brief Clears the HSEM Interrupt flags.
103 * @param __SEM_MASK__: semaphores Mask
104 * @retval None.
105 */
106#if defined(DUAL_CORE)
107#define __HAL_HSEM_CLEAR_FLAG(__SEM_MASK__) ((((SCB->CPUID & 0x000000F0) >> 4 )== 0x7) ? \
108 (HSEM->C1ICR |= (__SEM_MASK__)) : \
109 (HSEM->C2ICR |= (__SEM_MASK__)))
110#else
111#define __HAL_HSEM_CLEAR_FLAG(__SEM_MASK__) (HSEM->C1ICR |= (__SEM_MASK__))
112#endif /* DUAL_CORE */
113
114/**
115 * @}
116 */
117
118/* Exported functions --------------------------------------------------------*/
119/** @defgroup HSEM_Exported_Functions HSEM Exported Functions
120 * @{
121 */
122
123/** @addtogroup HSEM_Exported_Functions_Group1 Take and Release functions
124 * @brief HSEM Take and Release functions
125 * @{
126 */
127
128/* HSEM semaphore take (lock) using 2-Step method ****************************/
129HAL_StatusTypeDef HAL_HSEM_Take(uint32_t SemID, uint32_t ProcessID);
130/* HSEM semaphore fast take (lock) using 1-Step method ***********************/
132/* HSEM Release **************************************************************/
133void HAL_HSEM_Release(uint32_t SemID, uint32_t ProcessID);
134/* HSEM Release All************************************************************/
135void HAL_HSEM_ReleaseAll(uint32_t Key, uint32_t CoreID);
136/* HSEM Check semaphore state Taken or not **********************************/
137uint32_t HAL_HSEM_IsSemTaken(uint32_t SemID);
138
139/**
140 * @}
141 */
142
143/** @addtogroup HSEM_Exported_Functions_Group2 HSEM Set and Get Key functions
144 * @brief HSEM Set and Get Key functions.
145 * @{
146 */
147/* HSEM Set Clear Key *********************************************************/
148void HAL_HSEM_SetClearKey(uint32_t Key);
149/* HSEM Get Clear Key *********************************************************/
150uint32_t HAL_HSEM_GetClearKey(void);
151/**
152 * @}
153 */
154
155/** @addtogroup HSEM_Exported_Functions_Group3
156 * @brief HSEM Notification functions
157 * @{
158 */
159/* HSEM Activate HSEM Notification (When a semaphore is released) ) *****************/
160void HAL_HSEM_ActivateNotification(uint32_t SemMask);
161/* HSEM Deactivate HSEM Notification (When a semaphore is released) ****************/
162void HAL_HSEM_DeactivateNotification(uint32_t SemMask);
163/* HSEM Free Callback (When a semaphore is released) *******************************/
164void HAL_HSEM_FreeCallback(uint32_t SemMask);
165/* HSEM IRQ Handler **********************************************************/
167
168/**
169 * @}
170 */
171
172/**
173 * @}
174 */
175
176/* Private macros ------------------------------------------------------------*/
177/** @defgroup HSEM_Private_Macros HSEM Private Macros
178 * @{
179 */
180
181#define IS_HSEM_SEMID(__SEMID__) ((__SEMID__) <= HSEM_SEMID_MAX )
182
183#define IS_HSEM_PROCESSID(__PROCESSID__) ((__PROCESSID__) <= HSEM_PROCESSID_MAX )
184
185#define IS_HSEM_KEY(__KEY__) ((__KEY__) <= HSEM_CLEAR_KEY_MAX )
186
187#if defined(DUAL_CORE)
188#define IS_HSEM_COREID(__COREID__) (((__COREID__) == HSEM_CPU1_COREID) || \
189 ((__COREID__) == HSEM_CPU2_COREID))
190#else
191#define IS_HSEM_COREID(__COREID__) ((__COREID__) == HSEM_CPU1_COREID)
192#endif
193
194
195/**
196 * @}
197 */
198
199/**
200 * @}
201 */
202
203/**
204 * @}
205 */
206
207#ifdef __cplusplus
208}
209#endif
210
211#endif /* STM32H7xx_HAL_HSEM_H */
HAL_StatusTypeDef HAL_HSEM_Take(uint32_t SemID, uint32_t ProcessID)
void HAL_HSEM_Release(uint32_t SemID, uint32_t ProcessID)
void HAL_HSEM_ReleaseAll(uint32_t Key, uint32_t CoreID)
uint32_t HAL_HSEM_IsSemTaken(uint32_t SemID)
HAL_StatusTypeDef HAL_HSEM_FastTake(uint32_t SemID)
uint32_t HAL_HSEM_GetClearKey(void)
void HAL_HSEM_SetClearKey(uint32_t Key)
void HAL_HSEM_ActivateNotification(uint32_t SemMask)
void HAL_HSEM_FreeCallback(uint32_t SemMask)
void HAL_HSEM_DeactivateNotification(uint32_t SemMask)
void HAL_HSEM_IRQHandler(void)
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_StatusTypeDef
HAL Status structures definition.