#ifndef __BOARD_H__
#define __BOARD_H__

#include <stm32f10x.h>

#define VERSION "v1.0.0"

/* **********NVIC中断向量控制器组别********** */
#define NVIC_GROUP_LEVEL    NVIC_PriorityGroup_2
/* **********END********** */

/* **********SystemClock相关********** */
// GPIO
#define GPIO_ENABLE
#define USE_GPIOA
#define USE_GPIOB
#define USE_GPIOC
#define USE_GPIOD
#define USE_GPIOE
#define USE_GPIOF
#define USE_GPIOG
// USART
#define USART_ENABLE
#define USE_USART1
#undef USE_USART2
#undef USE_USART3
#undef USE_USART4
#undef USE_USART5
#undef USE_USART6
/* **********END********** */

/* **********GPIO DO DI相关********** */
// 数字输出
#undef USE_DIGITAL_OUTPUT
#ifdef USE_DIGITAL_OUTPUT
#define DO_NUM 2
#define DO1 0
#define DO2 1
#endif

// 数字输入
#undef USE_DIGITAL_INPUT
#ifdef USE_DIGITAL_INPUT
#define DI_NUM 2
#define DI1 0
#define DI2 1
#endif

// LED灯
#define USE_LED
#ifdef USE_LED
#define LED_NUM 2
#define LED0 0
#define LED1 1
#endif
/* **********END********** */

/* **********串口相关********** */
#ifdef USE_USART1
#define COM0 USART1_BASE
#define COM0_IRQN USART1_IRQn
#define COM0_TX_PORT GPIOA
#define COM0_RX_PORT GPIOA
#define COM0_TX_PIN GPIO_Pin_9
#define COM0_RX_PIN GPIO_Pin_10
#endif
#ifdef USE_USART2
#define COM1 USART2_BASE
#define COM1_IRQN USART2_IRQn
#define COM1_TX_PORT GPIOA
#define COM1_RX_PORT GPIOA
#define COM1_TX_PIN GPIO_Pin_2
#define COM1_RX_PIN GPIO_Pin_3
#endif
#ifdef USE_USART3
#define COM2 USART3_BASE
#define COM2_IRQN USART3_IRQn
#define COM2_TX_PORT GPIOB
#define COM2_RX_PORT GPIOB
#define COM2_TX_PIN GPIO_Pin_10
#define COM2_RX_PIN GPIO_Pin_11
#endif
#ifdef USE_USART4
#define COM3 UART4_BASE
#define COM3_IRQN UART4_IRQn
#define COM3_TX_PORT GPIOC
#define COM3_RX_PORT GPIOC
#define COM3_TX_PIN GPIO_Pin_10
#define COM3_RX_PIN GPIO_Pin_11
#endif
#ifdef USE_USART5
#define COM4 UART5_BASE
#define COM4_IRQN UART5_IRQn
#define COM4_TX_PORT GPIOB
#define COM4_RX_PORT GPIOD
#define COM4_TX_PIN GPIO_Pin_12
#define COM4_RX_PIN GPIO_Pin_2
#endif
/* LetterShell */
#define USE_SHELL
#ifdef USE_SHELL
  #define TTY_COM COM0
  #define TTY_COM_IRQN  COM0_IRQN
#endif
/* **********END********** */

#define USE_ANALOG_INPUT
#define USE_ANALOG_OUTPUT


/* 自定义Flash布局相关 */
#define BOOT_SIZE_16    /* 16Kb的Bootloader大小 不带网络*/
//#define BOOT_SIZE_32    /* 32Kb的Bootloader大小 带网络*/

#define FLASH_BASE_ADDR        0x08000000    //Flash基地址
#define BOOT_ADDR              0x08000000    //引导程序地址
//BOOT程序大小
#ifdef BOOT_SIZE_16
    #define BOOT_ROM           0x4000        
#endif
#ifdef BOOT_SIZE_32
    #define BOOT_ROM           0x8000
#endif
#define USER_PARAM_ADDR        (FLASH_BASE_ADDR + BOOT_ROM)     //用户参数分区
#define APPLICATION_ADDR       0x08010000    //从128K的位置开始是应用程序
/* **********END********** */
#endif
