/*==============================================================================
 * Конфигурация портов с использованием бибилотеки PLIB035
 *------------------------------------------------------------------------------
 * ЦНИИ СЭТ, Разваляев Алексей <wot890089@mail.ru>
 *==============================================================================
 * Реализация функций инициализации портов находится в gpio.c
 *                                  ЦНИИ СЭТ
 *==============================================================================
 */
#ifndef __GPIO_H
#define __GPIO_H
//-- Includes ------------------------------------------------------------------
#include "main.h"

//-- Defines -------------------------------------------------------------------
// Дефайны для режима пина      OutEnable,  AltFuncEnable,  DigitalEnable 
#define GPIO_PinMode_Unused     DISABLE,    DISABLE,        DISABLE
#define GPIO_PinMode_Input      DISABLE,    DISABLE,        ENABLE
#define GPIO_PinMode_Output     ENABLE,     DISABLE,        ENABLE
#define GPIO_PinMode_AltFunc    DISABLE,    ENABLE,         ENABLE
//#define GPIO_PinMode_Analog     DISABLE,    DISABLE,        DISABLE




static GPIO_Init_TypeDef gpioa_config[] = {
  // Пин,         Режим,                Выходной режим,   Входной режим,        Подтяжка,               Нагрузка/Скорость
  { GPIO_Pin_0,   GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_1,   GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_2,   GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_3,   GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_4,   GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_5,   GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_6,   GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_7,   GPIO_PinMode_Output,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_8,   GPIO_PinMode_Output,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_9,   GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_10,  GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_11,  GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_12,  GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_13,  GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_14,  GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_15,  GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
};

static GPIO_Init_TypeDef gpiob_config[] = {
  { GPIO_Pin_0,   GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_1,   GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_2,   GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_3,   GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_4,   GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_5,   GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_6,   GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_7,   GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_8,   GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_9,   GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_10,  GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_11,  GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_12,  GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_13,  GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_14,  GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
  { GPIO_Pin_15,  GPIO_PinMode_Unused,  GPIO_OutMode_PP,  GPIO_InMode_Schmitt,  GPIO_PullMode_Disable,  GPIO_DriveMode_HighFast },
};








// Другой вариант
//#define GPIO_OUT_PP_PA_PINS   /*  GPIO_Pin_0  | */ \
//                              /*  GPIO_Pin_1  | */ \
//                              /*  GPIO_Pin_2  | */ \
//                              /*  GPIO_Pin_3  | */ \
//                              /*  GPIO_Pin_4  | */ \
//                              /*  GPIO_Pin_5  | */ \
//                              /*  GPIO_Pin_6  | */ \
//                                GPIO_Pin_7  |  \
//                                GPIO_Pin_8  |  \
//                              /*  GPIO_Pin_9  | */ \
//                              /*  GPIO_Pin_10 | */ \
//                              /*  GPIO_Pin_11 | */ \
//                              /*  GPIO_Pin_12 | */ \
//                              /*  GPIO_Pin_13 | */ \
//                              /*  GPIO_Pin_14 | */ \
//                              /*  GPIO_Pin_15 | */ \
//                                  0

//#define GPIO_OUT_PP_PB_PINS   /*  GPIO_Pin_0  | */ \
//                              /*  GPIO_Pin_1  | */ \
//                              /*  GPIO_Pin_2  | */ \
//                              /*  GPIO_Pin_3  | */ \
//                              /*  GPIO_Pin_4  | */ \
//                              /*  GPIO_Pin_5  | */ \
//                              /*  GPIO_Pin_6  | */ \
//                              /*  GPIO_Pin_7  | */ \
//                              /*  GPIO_Pin_8  | */ \
//                              /*  GPIO_Pin_9  | */ \
//                              /*  GPIO_Pin_10 | */ \
//                              /*  GPIO_Pin_11 | */ \
//                              /*  GPIO_Pin_12 | */ \
//                              /*  GPIO_Pin_13 | */ \
//                              /*  GPIO_Pin_14 | */ \
//                              /*  GPIO_Pin_15 | */ \
//                                  0
//                              
//                              
//#define GPIO_OUT_OD_PA_PINS   /*  GPIO_Pin_0  | */ \
//                              /*  GPIO_Pin_1  | */ \
//                              /*  GPIO_Pin_2  | */ \
//                              /*  GPIO_Pin_3  | */ \
//                              /*  GPIO_Pin_4  | */ \
//                              /*  GPIO_Pin_5  | */ \
//                              /*  GPIO_Pin_6  | */ \
//                              /*  GPIO_Pin_7  | */ \
//                              /*  GPIO_Pin_8  | */ \
//                              /*  GPIO_Pin_9  | */ \
//                              /*  GPIO_Pin_10 | */ \
//                              /*  GPIO_Pin_11 | */ \
//                              /*  GPIO_Pin_12 | */ \
//                              /*  GPIO_Pin_13 | */ \
//                              /*  GPIO_Pin_14 | */ \
//                              /*  GPIO_Pin_15 | */ \
//                                  0
//                              
//#define GPIO_OUT_OD_PB_PINS   /*  GPIO_Pin_0  | */ \
//                              /*  GPIO_Pin_1  | */ \
//                              /*  GPIO_Pin_2  | */ \
//                              /*  GPIO_Pin_3  | */ \
//                              /*  GPIO_Pin_4  | */ \
//                              /*  GPIO_Pin_5  | */ \
//                              /*  GPIO_Pin_6  | */ \
//                              /*  GPIO_Pin_7  | */ \
//                              /*  GPIO_Pin_8  | */ \
//                              /*  GPIO_Pin_9  | */ \
//                              /*  GPIO_Pin_10 | */ \
//                              /*  GPIO_Pin_11 | */ \
//                              /*  GPIO_Pin_12 | */ \
//                              /*  GPIO_Pin_13 | */ \
//                              /*  GPIO_Pin_14 | */ \
//                              /*  GPIO_Pin_15 | */ \
//                                  0

//-- Exported functions prototypes ---------------------------------------------
void gpio_init(void);

#endif /*__GPIO_H*/
