gr55xx_hal_msio.h
Go to the documentation of this file.
1 /**
2  ****************************************************************************************
3  *
4  * @file gr55xx_hal_msio.h
5  * @author BLE Driver Team
6  * @brief Header file containing functions prototypes of MSIO HAL library.
7  *
8  ****************************************************************************************
9  * @attention
10  #####Copyright (c) 2019 GOODIX
11  All rights reserved.
12 
13  Redistribution and use in source and binary forms, with or without
14  modification, are permitted provided that the following conditions are met:
15  * Redistributions of source code must retain the above copyright
16  notice, this list of conditions and the following disclaimer.
17  * Redistributions in binary form must reproduce the above copyright
18  notice, this list of conditions and the following disclaimer in the
19  documentation and/or other materials provided with the distribution.
20  * Neither the name of GOODIX nor the names of its contributors may be used
21  to endorse or promote products derived from this software without
22  specific prior written permission.
23 
24  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27  ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
28  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34  POSSIBILITY OF SUCH DAMAGE.
35  ****************************************************************************************
36  */
37 
38 /** @addtogroup PERIPHERAL Peripheral Driver
39  * @{
40  */
41 
42 /** @addtogroup HAL_DRIVER HAL Driver
43  * @{
44  */
45 
46 /** @defgroup HAL_MSIO MSIO
47  * @brief MSIO HAL module driver.
48  * @{
49  */
50 
51 /* Define to prevent recursive inclusion -------------------------------------*/
52 #ifndef __GR55xx_HAL_MSIO_H__
53 #define __GR55xx_HAL_MSIO_H__
54 
55 #ifdef __cplusplus
56 extern "C" {
57 #endif
58 
59 /* Includes ------------------------------------------------------------------*/
60 #include "gr55xx_ll_msio.h"
61 #include "gr55xx_hal_def.h"
62 
63 /* Exported types ------------------------------------------------------------*/
64 /** @addtogroup HAL_MSIO_ENUMERATIONS Enumerations
65  * @{
66  */
67 
68 /**
69  * @brief MSIO Bit SET and Bit RESET enumerations
70  */
71 typedef enum
72 {
73  MSIO_PIN_RESET = 0U, /**< MSIO pin low level. */
74  MSIO_PIN_SET /**< MSIO pin high level.*/
76 
77 /** @} */
78 
79 /** @addtogroup HAL_MSIO_STRUCTURES Structures
80  * @{
81  */
82 
83 /**
84  * @brief MSIO init structure definition
85  */
86 typedef struct _msio_init
87 {
88  uint32_t pin; /**< Specifies the MSIO pins to be configured.
89  This parameter can be any value of @ref MSIO_pins */
90 
91  uint32_t direction; /**< Specifies the direction for the selected pins.
92  This parameter can be a value of @ref MSIO_direction */
93 
94  uint32_t mode; /**< Specifies the operating mode for the selected pins.
95  This parameter can be a value of @ref MSIO_mode */
96 
97  uint32_t pull; /**< Specifies the Pull-up or Pull-Down activation for the selected pins.
98  This parameter can be a value of @ref MSIO_pull */
99 
100  uint32_t mux; /**< Specifies the Peripheral to be connected to the selected pins.
101  This parameter can be a value of @ref GPIOEx_Mux_Function_Selection. */
103 
104 /** @} */
105 
106 /**
107  * @defgroup HAL_MSIO_MACRO Defines
108  * @{
109  */
110 
111 /* Exported constants --------------------------------------------------------*/
112 /** @defgroup MSIO_Exported_Constants MSIO Exported Constants
113  * @{
114  */
115 
116 /** @defgroup MSIO_pins MSIO pins
117  * @{
118  */
119 #define MSIO_PIN_0 ((uint16_t)0x0001U) /**< Pin 0 selected */
120 #define MSIO_PIN_1 ((uint16_t)0x0002U) /**< Pin 1 selected */
121 #define MSIO_PIN_2 ((uint16_t)0x0004U) /**< Pin 2 selected */
122 #define MSIO_PIN_3 ((uint16_t)0x0008U) /**< Pin 3 selected */
123 #define MSIO_PIN_4 ((uint16_t)0x0010U) /**< Pin 4 selected */
124 
125 #define MSIO_PIN_ALL ((uint16_t)0x001FU) /**< All pins selected */
126 
127 #define MSIO_PIN_MASK (0x0000001FU) /**< PIN mask for assert test */
128 /** @} */
129 
130 /** @defgroup MSIO_direction MSIO direction
131  * @{
132  */
133 #define MSIO_DIRECTION_NONE LL_MSIO_DIRECTION_NONE /**< Disable input & output */
134 #define MSIO_DIRECTION_INPUT LL_MSIO_DIRECTION_INPUT /**< Only Input */
135 #define MSIO_DIRECTION_OUTPUT LL_MSIO_DIRECTION_OUTPUT /**< Only Output */
136 #define MSIO_DIRECTION_INOUT LL_MSIO_DIRECTION_INOUT /**< Input & Output */
137 /** @} */
138 
139 /** @defgroup MSIO_mode MSIO mode
140  * @brief MSIO Analog or Digital mode
141  * @{
142  */
143 #define MSIO_MODE_ANALOG LL_MSIO_MODE_ANALOG /**< Analog IO */
144 #define MSIO_MODE_DIGITAL LL_MSIO_MODE_DIGITAL /**< Digital IO */
145 /** @} */
146 
147 /** @defgroup MSIO_pull MSIO pull
148  * @brief MSIO Pull-Up or Pull-Down Activation
149  * @{
150  */
151 #define MSIO_NOPULL LL_MSIO_PULL_NO /**< No Pull-up or Pull-down activation */
152 #define MSIO_PULLUP LL_MSIO_PULL_UP /**< Pull-up activation */
153 #define MSIO_PULLDOWN LL_MSIO_PULL_DOWN /**< Pull-down activation */
154 /** @} */
155 
156 /**
157  * @brief MSIO_default_config initStruct default configuartion
158  */
159 #define MSIO_DEFAULT_CONFIG \
160 { \
161  .pin = MSIO_PIN_ALL, \
162  .direction = MSIO_DIRECTION_INPUT, \
163  .mode = MSIO_MODE_DIGITAL, \
164  .pull = MSIO_PULLDOWN, \
165  .mux = GPIO_MUX_7, \
166 }
167 /** @} */
168 
169 /* Exported macro ------------------------------------------------------------*/
170 /** @defgroup MSIO_Exported_Macros MSIO Exported Macros
171  * @{
172  */
173 
174 /** @} */
175 
176 /* Private macros ------------------------------------------------------------*/
177 /** @addtogroup MSIO_Private_Macros MSIO Private Macros
178  * @{
179  */
180 
181 /**
182  * @brief Check if MSIO pin action is valid.
183  * @param __ACTION__ MSIO pin action.
184  * @retval SET (__ACTION__ is valid) or RESET (__ACTION__ is invalid)
185  */
186 #define IS_MSIO_PIN_ACTION(__ACTION__) (((__ACTION__) == MSIO_PIN_RESET) || ((__ACTION__) == MSIO_PIN_SET))
187 
188 /**
189  * @brief Check if MSIO pins are valid.
190  * @param __PIN__ MSIO pins.
191  * @retval SET (__PIN__ is valid) or RESET (__PIN__ is invalid)
192  */
193 #define IS_MSIO_PIN(__PIN__) ((((__PIN__) & MSIO_PIN_MASK) != 0x00U) && \
194  (((__PIN__) & ~MSIO_PIN_MASK) == 0x00U))
195 
196 /**
197  * @brief Check if MSIO direction is valid.
198  * @param __DIR__ MSIO direction.
199  * @retval SET (__DIR__ is valid) or RESET (__DIR__ is invalid)
200  */
201 #define IS_MSIO_DIRECTION(__DIR__) (((__DIR__) == MSIO_DIRECTION_NONE) || \
202  ((__DIR__) == MSIO_DIRECTION_INPUT) || \
203  ((__DIR__) == MSIO_DIRECTION_OUTPUT) || \
204  ((__DIR__) == MSIO_DIRECTION_INOUT))
205 
206 /**
207  * @brief Check if MSIO mode is valid.
208  * @param __MODE__ MSIO mode.
209  * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid)
210  */
211 #define IS_MSIO_MODE(__MODE__) (((__MODE__) == MSIO_MODE_ANALOG) || \
212  ((__MODE__) == MSIO_MODE_DIGITAL))
213 
214 /**
215  * @brief Check if MSIO pull type is valid.
216  * @param __PULL__ MSIO pull type.
217  * @retval SET (__PULL__ is valid) or RESET (__PULL__ is invalid)
218  */
219 #define IS_MSIO_PULL(__PULL__) (((__PULL__) == MSIO_NOPULL) || \
220  ((__PULL__) == MSIO_PULLUP) || \
221  ((__PULL__) == MSIO_PULLDOWN))
222 
223 /** @} */
224 
225 /** @} */
226 
227 /* Include MSIO HAL Extended module */
228 #include "gr55xx_hal_msio_ex.h"
229 
230 /* Exported functions --------------------------------------------------------*/
231 /** @addtogroup HAL_MSIO_DRIVER_FUNCTIONS Functions
232  * @{
233  */
234 
235 /** @addtogroup MSIO_Exported_Functions_Group1 Initialization and de-initialization functions
236  * @brief Initialization and Configuration functions
237  * @{
238  */
239 
240 /**
241  ****************************************************************************************
242  * @brief Initialize the MSIOx peripheral according to the specified parameters in the @ref msio_init_t.
243  * @param[in] MSIOx: MSIO peripheral port.
244  * @param[in] p_msio_init: Pointer to an @ref msio_init_t structure that contains
245  * the configuration information for the specified MSIO peripheral port.
246  ****************************************************************************************
247  */
248 void hal_msio_init(msio_pad_t MSIOx, msio_init_t *p_msio_init);
249 
250 /**
251  ****************************************************************************************
252  * @brief De-initialize the MSIOx peripheral registers to their default reset values.
253  * @param[in] MSIOx: MSIO peripheral port.
254  * @param[in] msio_pin: Specifies the port bit to be written.
255  * This parameter can be a combination of the following values:
256  * @arg @ref MSIO_PIN_0
257  * @arg @ref MSIO_PIN_1
258  * @arg @ref MSIO_PIN_2
259  * @arg @ref MSIO_PIN_3
260  * @arg @ref MSIO_PIN_4
261  * @arg @ref MSIO_PIN_ALL
262  ****************************************************************************************
263  */
264 void hal_msio_deinit(msio_pad_t MSIOx, uint32_t msio_pin);
265 
266 /** @} */
267 
268 /** @addtogroup MSIO_Exported_Functions_Group2 IO operation functions
269  * @brief MSIO Read, Write, and Toggle management functions.
270  * @{
271  */
272 
273 /**
274  ****************************************************************************************
275  * @brief Read the specified input port pin.
276  * @param[in] MSIOx: MSIO peripheral port.
277  * @param[in] msio_pin: Specifies the port bit to be read.
278  * This parameter can be one of the following values:
279  * @arg @ref MSIO_PIN_0
280  * @arg @ref MSIO_PIN_1
281  * @arg @ref MSIO_PIN_2
282  * @arg @ref MSIO_PIN_3
283  * @arg @ref MSIO_PIN_4
284  * @retval ::MSIO_PIN_RESET: MSIO pin low level.
285  * @retval ::MSIO_PIN_SET: MSIO pin high level.
286  ****************************************************************************************
287  */
289 
290 /**
291  ****************************************************************************************
292  * @brief Set or clear the selected data port bit.
293  * @param[in] MSIOx: MSIO peripheral port.
294  * @param[in] msio_pin: Specifies the port bit to be written.
295  * This parameter can be a combination of the following values:
296  * @arg @ref MSIO_PIN_0
297  * @arg @ref MSIO_PIN_1
298  * @arg @ref MSIO_PIN_2
299  * @arg @ref MSIO_PIN_3
300  * @arg @ref MSIO_PIN_4
301  * @arg @ref MSIO_PIN_ALL
302  * @param[in] pin_state: Specifies the value to be written to the selected bit.
303  * This parameter can be one of the MSIO_PinState enum values:
304  * @arg MSIO_PIN_RESET: to clear the port pin
305  * @arg MSIO_PIN_SET: to set the port pin
306  ****************************************************************************************
307  */
308 void hal_msio_write_pin(msio_pad_t MSIOx, uint16_t msio_pin, msio_pin_state_t pin_state);
309 
310 /**
311  ****************************************************************************************
312  * @brief Toggle the specified MSIO pin.
313  * @param[in] MSIOx: MSIO peripheral port.
314  * @param[in] msio_pin: Specifies the pin to be toggled.
315  * This parameter can be a combination of the following values:
316  * @arg @ref MSIO_PIN_0
317  * @arg @ref MSIO_PIN_1
318  * @arg @ref MSIO_PIN_2
319  * @arg @ref MSIO_PIN_3
320  * @arg @ref MSIO_PIN_4
321  * @arg @ref MSIO_PIN_ALL
322  ****************************************************************************************
323  */
324 void hal_msio_toggle_pin(msio_pad_t MSIOx, uint16_t msio_pin);
325 
326 /** @} */
327 
328 /** @} */
329 
330 
331 #ifdef __cplusplus
332 }
333 #endif
334 
335 #endif /* __GR55xx_HAL_MSIO_H__ */
336 
337 /** @} */
338 
339 /** @} */
340 
341 /** @} */
_msio_init::direction
uint32_t direction
Definition: gr55xx_hal_msio.h:91
MSIO_PIN_RESET
@ MSIO_PIN_RESET
Definition: gr55xx_hal_msio.h:73
_msio_init
MSIO init structure definition.
Definition: gr55xx_hal_msio.h:87
gr55xx_ll_msio.h
Header file containing functions prototypes of MSIO LL library.
hal_msio_write_pin
void hal_msio_write_pin(msio_pad_t MSIOx, uint16_t msio_pin, msio_pin_state_t pin_state)
Set or clear the selected data port bit.
msio_init_t
struct _msio_init msio_init_t
MSIO init structure definition.
_msio_init::mode
uint32_t mode
Definition: gr55xx_hal_msio.h:94
hal_msio_init
void hal_msio_init(msio_pad_t MSIOx, msio_init_t *p_msio_init)
Initialize the MSIOx peripheral according to the specified parameters in the msio_init_t.
hal_msio_deinit
void hal_msio_deinit(msio_pad_t MSIOx, uint32_t msio_pin)
De-initialize the MSIOx peripheral registers to their default reset values.
msio_pad_t
msio_pad_t
MSIO pad Enumerations definition.
Definition: gr55xx_ll_msio.h:77
hal_msio_toggle_pin
void hal_msio_toggle_pin(msio_pad_t MSIOx, uint16_t msio_pin)
Toggle the specified MSIO pin.
_msio_init::mux
uint32_t mux
Definition: gr55xx_hal_msio.h:100
hal_msio_read_pin
msio_pin_state_t hal_msio_read_pin(msio_pad_t MSIOx, uint16_t msio_pin)
Read the specified input port pin.
msio_pin_state_t
msio_pin_state_t
MSIO Bit SET and Bit RESET enumerations.
Definition: gr55xx_hal_msio.h:72
MSIO_PIN_SET
@ MSIO_PIN_SET
Definition: gr55xx_hal_msio.h:74
_msio_init::pull
uint32_t pull
Definition: gr55xx_hal_msio.h:97
_msio_init::pin
uint32_t pin
Definition: gr55xx_hal_msio.h:88
gr55xx_hal_def.h
This file contains HAL common definitions, enumeration, macros and structures definitions.
gr55xx_hal_msio_ex.h
Header file containing extended macro of MSIO HAL library.