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