NIIETCM4 PD  v0.9.0
Драйвер периферии для микроконтроллеров на базе ядра ARM Cortex-M4
niietcm4_gpio.h
См. документацию.
1 
29 /* Define to prevent recursive inclusion -------------------------------------*/
30 #ifndef __NIIETCM4_GPIO_H
31 #define __NIIETCM4_GPIO_H
32 
33 #ifdef __cplusplus
34  extern "C" {
35 #endif
36 
37 /* Includes ------------------------------------------------------------------*/
38 #include "niietcm4.h"
39 
56 #define IS_GPIO_QUAL_PERIOD(PERIOD) (((PERIOD) & ((uint32_t)0xFFFFFF00)) == ((uint32_t)0x00))
57 
62 typedef enum
63 {
64  Bit_CLEAR = 0,
66 }BitAction;
67 
72 #define IS_GPIO_BIT_ACTION(ACTION) (((ACTION) == Bit_CLEAR) || ((ACTION) == Bit_SET))
73 
78 typedef enum
79 {
83 
88 #define IS_GPIO_DIR(DIR) (((DIR) == GPIO_Dir_In) || \
89  ((DIR) == GPIO_Dir_Out))
90 
95 typedef enum
96 {
100 
105 #define IS_GPIO_MODE(MODE) (((MODE) == GPIO_Mode_IO) || \
106  ((MODE) == GPIO_Mode_AltFunc))
107 
112 typedef enum
113 {
117 
122 #define IS_GPIO_INT_TYPE(INT_TYPE) (((INT_TYPE) == GPIO_IntType_Level) || \
123  ((INT_TYPE) == GPIO_IntType_Edge))
124 
129 typedef enum
130 {
134 
139 #define IS_GPIO_INT_POL(INT_POL) (((INT_POL) == GPIO_IntPol_Neg) || \
140  ((INT_POL) == GPIO_IntPol_Pos))
141 
146 typedef enum
147 {
151 
156 #define IS_GPIO_OUT(OUT) (((OUT) == GPIO_Out_Dis) || \
157  ((OUT) == GPIO_Out_En))
158 
163 typedef enum
164 {
168 
173 #define IS_GPIO_LOAD(LOAD) (((LOAD) == GPIO_Load_8mA) || \
174  ((LOAD) == GPIO_Load_16mA))
175 
180 typedef enum
181 {
185 
190 #define IS_GPIO_OUT_MODE(OUT_MODE) (((OUT_MODE) == GPIO_OutMode_PP) || \
191  ((OUT_MODE) == GPIO_OutMode_OD))
192 
197 typedef enum
198 {
202 
207 #define IS_GPIO_PULLUP(PULLUP) (((PULLUP) == GPIO_PullUp_Dis) || \
208  ((PULLUP) == GPIO_PullUp_En))
209 
214 typedef enum
215 {
219 
224 #define IS_GPIO_SYNC(SYNC) (((SYNC) == GPIO_Sync_Dis) || \
225  ((SYNC) == GPIO_Sync_En))
226 
231 typedef enum
232 {
236 
241 #define IS_GPIO_QUAL(QUAL) (((QUAL) == GPIO_Qual_Dis) || \
242  ((QUAL) == GPIO_Qual_En))
243 
248 typedef enum
249 {
253 
258 #define IS_GPIO_QUAL_MODE(QUAL_MODE) (((QUAL_MODE) == GPIO_QualMode_3sample) || \
259  ((QUAL_MODE) == GPIO_QualMode_6sample))
260 
265 typedef enum
266 {
271 
276 #define IS_GPIO_ALT_FUNC(ALT_FUNC) (((ALT_FUNC) == GPIO_AltFunc_1) || \
277  ((ALT_FUNC) == GPIO_AltFunc_2) || \
278  ((ALT_FUNC) == GPIO_AltFunc_3))
279 
284 typedef struct
285 {
286  uint32_t GPIO_Pin;
303 
304 
305 
306 
319 #define GPIO_Pin_0 ((uint32_t)0x0001)
320 #define GPIO_Pin_1 ((uint32_t)0x0002)
321 #define GPIO_Pin_2 ((uint32_t)0x0004)
322 #define GPIO_Pin_3 ((uint32_t)0x0008)
323 #define GPIO_Pin_4 ((uint32_t)0x0010)
324 #define GPIO_Pin_5 ((uint32_t)0x0020)
325 #define GPIO_Pin_6 ((uint32_t)0x0040)
326 #define GPIO_Pin_7 ((uint32_t)0x0080)
327 #define GPIO_Pin_8 ((uint32_t)0x0100)
328 #define GPIO_Pin_9 ((uint32_t)0x0200)
329 #define GPIO_Pin_10 ((uint32_t)0x0400)
330 #define GPIO_Pin_11 ((uint32_t)0x0800)
331 #define GPIO_Pin_12 ((uint32_t)0x1000)
332 #define GPIO_Pin_13 ((uint32_t)0x2000)
333 #define GPIO_Pin_14 ((uint32_t)0x4000)
334 #define GPIO_Pin_15 ((uint32_t)0x8000)
335 #define GPIO_Pin_0_3 ((uint32_t)0x000F)
336 #define GPIO_Pin_4_7 ((uint32_t)0x00F0)
337 #define GPIO_Pin_8_11 ((uint32_t)0x0F00)
338 #define GPIO_Pin_12_15 ((uint32_t)0xF000)
339 #define GPIO_Pin_0_7 ((uint32_t)0x00FF)
340 #define GPIO_Pin_8_15 ((uint32_t)0xFF00)
341 #define GPIO_Pin_All ((uint32_t)0xFFFF)
347 #define IS_GPIO_PIN(PIN) (((PIN) != (uint32_t)0x0000) && (((PIN) & (uint32_t)0xFFFF0000) == ((uint32_t)0x0000)))
348 
349 
354 #define IS_GET_GPIO_PIN(PIN) (((PIN) == GPIO_Pin_0) || \
355  ((PIN) == GPIO_Pin_1) || \
356  ((PIN) == GPIO_Pin_2) || \
357  ((PIN) == GPIO_Pin_3) || \
358  ((PIN) == GPIO_Pin_4) || \
359  ((PIN) == GPIO_Pin_5) || \
360  ((PIN) == GPIO_Pin_6) || \
361  ((PIN) == GPIO_Pin_7) || \
362  ((PIN) == GPIO_Pin_8) || \
363  ((PIN) == GPIO_Pin_9) || \
364  ((PIN) == GPIO_Pin_10) || \
365  ((PIN) == GPIO_Pin_11) || \
366  ((PIN) == GPIO_Pin_12) || \
367  ((PIN) == GPIO_Pin_13) || \
368  ((PIN) == GPIO_Pin_14) || \
369  ((PIN) == GPIO_Pin_15))
370 
387 void GPIO_DeInit(NT_GPIO_TypeDef* GPIOx);
388 void GPIO_Init(NT_GPIO_TypeDef* GPIOx, GPIO_Init_TypeDef* GPIO_InitStruct);
389 void GPIO_StructInit(GPIO_Init_TypeDef* GPIO_InitStruct);
390 
399 void GPIO_AltFuncConfig(NT_GPIO_TypeDef* GPIOx, uint32_t GPIO_Pin, GPIO_AltFunc_TypeDef GPIO_AltFunc);
400 
413 uint32_t GPIO_ReadBit(NT_GPIO_TypeDef* GPIOx, uint32_t GPIO_Pin);
414 uint32_t GPIO_Read(NT_GPIO_TypeDef* GPIOx);
415 uint32_t GPIO_ReadMask(NT_GPIO_TypeDef* GPIOx, uint32_t MaskVal);
416 
425 void GPIO_WriteBit(NT_GPIO_TypeDef* GPIOx, uint32_t GPIO_Pin, BitAction BitVal);
426 void GPIO_Write(NT_GPIO_TypeDef* GPIOx, uint32_t PortVal);
427 void GPIO_WriteMask(NT_GPIO_TypeDef* GPIOx, uint32_t MaskVal, uint32_t PortVal);
428 
437 void GPIO_SetBits(NT_GPIO_TypeDef* GPIOx, uint32_t GPIO_Pin);
438 void GPIO_ClearBits(NT_GPIO_TypeDef* GPIOx, uint32_t GPIO_Pin);
439 void GPIO_ToggleBits(NT_GPIO_TypeDef* GPIOx, uint32_t GPIO_Pin);
440 
453 void GPIO_QualConfig(NT_GPIO_TypeDef* GPIOx, uint32_t GPIO_Pin, GPIO_QualMode_TypeDef Mode, uint32_t SamplePerod);
454 void GPIO_QualCmd(NT_GPIO_TypeDef* GPIOx, uint32_t GPIO_Pin, FunctionalState State);
455 void GPIO_SyncCmd(NT_GPIO_TypeDef* GPIOx, uint32_t GPIO_Pin, FunctionalState State);
456 
465 void GPIO_ITConfig(NT_GPIO_TypeDef* GPIOx, uint32_t GPIO_Pin, GPIO_IntType_TypeDef IntType, GPIO_IntPol_TypeDef IntPol);
466 void GPIO_ITCmd(NT_GPIO_TypeDef* GPIOx, uint32_t GPIO_Pin, FunctionalState State);
467 void GPIO_ITStatusClear(NT_GPIO_TypeDef* GPIOx, uint32_t GPIO_Pin);
468 
474 #ifdef __cplusplus
475 }
476 #endif
477 
478 #endif /* __NIIETCM4_GPIO_H */
479 
492 /******************* (C) COPYRIGHT 2015 NIIET *****END OF FILE****/
GPIO_Load_TypeDef GPIO_Load
void GPIO_WriteBit(NT_GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin, BitAction BitVal)
Изменение состояния выбранного пина.
FunctionalState
Описывает логическое состояние периферии. Используется для операций включения/выключения периферийных...
Definition: niietcm4.h:157
GPIO_PullUp_TypeDef
Включение подтяжки к питанию.
GPIO_AltFunc_TypeDef GPIO_AltFunc
void GPIO_Init(NT_GPIO_TypeDef *GPIOx, GPIO_Init_TypeDef *GPIO_InitStruct)
Инициализирует модуль GPIOx согласно параметрам структуры GPIO_InitStruct.
void GPIO_WriteMask(NT_GPIO_TypeDef *GPIOx, uint32_t MaskVal, uint32_t PortVal)
Изменение состояния выбранного порта GPIOx с использованием маски.
void GPIO_StructInit(GPIO_Init_TypeDef *GPIO_InitStruct)
Заполнение каждого члена структуры GPIO_InitStruct значениями по умолчанию.
void GPIO_ClearBits(NT_GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
Сброс выбранных пинов.
uint32_t GPIO_ReadBit(NT_GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
Чтение состояния выбранного пина.
GPIO_OutMode_TypeDef GPIO_OutMode
void GPIO_QualConfig(NT_GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin, GPIO_QualMode_TypeDef Mode, uint32_t SamplePerod)
Настройка фильтра выбранных пинов.
GPIO_Qual_TypeDef
Включение входного фильтра.
GPIO_IntPol_TypeDef
Выбор полярности события для возникновения прерывания.
GPIO_Out_TypeDef
Включение выхода пина.
void GPIO_ITCmd(NT_GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin, FunctionalState State)
Включение прерываний выбранных пинов.
void GPIO_DeInit(NT_GPIO_TypeDef *GPIOx)
Устанавливает все регистры выбранного GPIOx значениями по умолчанию.
GPIO_Load_TypeDef
Выбор максимальной нагрузочной способности пина.
GPIO_AltFunc_TypeDef
Выбор номера альтернативной функции пина.
GPIO_Sync_TypeDef
Включение режима пересинхронизации входов через 2 триггера-защелки.
void GPIO_ITConfig(NT_GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin, GPIO_IntType_TypeDef IntType, GPIO_IntPol_TypeDef IntPol)
Настройка прерываний пинов.
GPIO_Out_TypeDef GPIO_Out
GPIO_IntType_TypeDef
Выбор события для возникновения прерывания.
Структура инициализации GPIO.
GPIO_Mode_TypeDef GPIO_Mode
void GPIO_QualCmd(NT_GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin, FunctionalState State)
Включение входных фильтров.
void GPIO_SyncCmd(NT_GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin, FunctionalState State)
Включение пересинхронизации входов через 2 триггера-защелки.
void GPIO_Write(NT_GPIO_TypeDef *GPIOx, uint32_t PortVal)
Изменение состояния выбранного порта GPIOx.
Это главный заголовочный файл драйвера, обычно включаемый в main.c.
GPIO_OutMode_TypeDef
Выбор режима работы выходных каскадов.
void GPIO_SetBits(NT_GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
Установка выбранных пинов.
BitAction
Тип, определяющий состояния бита.
Definition: niietcm4_gpio.h:62
void GPIO_ToggleBits(NT_GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
Переключение выбранных пинов в противоположное состояние.
GPIO_PullUp_TypeDef GPIO_PullUp
GPIO_Dir_TypeDef GPIO_Dir
GPIO_QualMode_TypeDef
Выбор режима работы входного фильтра.
GPIO_Mode_TypeDef
Выбор режима работы пина.
Definition: niietcm4_gpio.h:95
void GPIO_AltFuncConfig(NT_GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin, GPIO_AltFunc_TypeDef GPIO_AltFunc)
Осуществляет выбор альтернативной функции вывода GPIOx.
void GPIO_ITStatusClear(NT_GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
Очистка флагов прерываний выбранных пинов.
uint32_t GPIO_ReadMask(NT_GPIO_TypeDef *GPIOx, uint32_t MaskVal)
Чтение состояния выбранного порта GPIOx c использованием маски.
GPIO_Dir_TypeDef
Выбор направления работы пина.
Definition: niietcm4_gpio.h:78
uint32_t GPIO_Read(NT_GPIO_TypeDef *GPIOx)
Чтение состояния выбранного порта GPIOx.