#ifndef _BOARD_H_ #define _BOARD_H_ #include "Uart.h" #include "Timer.h" #include "flash.h" #include "fifo.h" #include "timeout.h" #include "I2C.h" #include "epprom.h" #include "rtc.h" #include "key.h" #define TQ_PORT GPIOC // 抬枪信号端口 #define TQ_PIN GPIO_PIN_8 // 抬枪信号管脚 #define BM_PORT GPIOC // 编码器信号端口 #define BM_PIN GPIO_PIN_9 // 编码器信号管脚 #define LED_GREEN_SET() gpio_bit_set(GPIOD, GPIO_PIN_14) // #define LED_GREEN_RESET() gpio_bit_reset(GPIOD, GPIO_PIN_14) #define LED_RED_SET() gpio_bit_set(GPIOD, GPIO_PIN_15) // #define LED_RED_RESET() gpio_bit_reset(GPIOD, GPIO_PIN_15) #define PORT_MAX_NUM 64 #define SEL_74CH165 0 #define USE_PORT_ID 0 enum { CEN = 0x01, CLK = 0x02, PLN = 0x03, }; enum { PORT_00 = 0x01, PORT_01 = 0x02, PORT_02 = 0x04, PORT_03 = 0x08, PORT_ALL = 0x0F, }; typedef struct port_msg_{ uint32_t group; uint32_t cePin; uint32_t doutPin; uint32_t cpPin; uint32_t plPin; }PortMsg; extern PortMsg g_portMsg[4]; typedef struct cs_port_msg_{ uint32_t csPort; uint32_t csPin; }CSPortMsg; #define CS_GROUP_NUM 12 // CS片选组数 上面12组,下面12组,共24组 extern CSPortMsg g_csPortMsg[24]; enum _RESET_FLAG_{ RESET_PINRST = 0x01, // NRST 引脚复位 RESET_PORRSTF = 0x02, // 上电掉电复位 RESET_SFTRSTF = 0x04, // 软件复位 RESET_IWDGRSTF = 0x08, //独立看门狗复位 RESET_WWDGRSTF = 0x10, // 窗口看门狗复位 RESET_LPWRRSTF = 0x20, // 低功耗复位 }; typedef struct { uint32_t tick; uint8_t status; }ExitTest; typedef struct { ExitTest exittest[25]; uint32_t count; uint8_t btestStart; uint32_t width[22]; // uint8_t wCount; // }TestInitConut; extern TestInitConut testcount; typedef struct gun_status{ uint8_t bGunUp; // 抬枪 uint8_t bGunDn; // 挂枪 uint8_t bgun; // timeout_t guntime; // 时间 timeout_t taigunTime; // 抬枪时间 }__attribute__((packed))GunStatus01; extern GunStatus01 g_gunSta; typedef struct gpio_exti_{ uint8_t groupNum; // 现在的组数 uint32_t csGroup[4]; // 片选组GPIOD GPIOC GPIOB uint32_t csPin[4]; // 具体的管脚 //exti_line_enum extiLine; // 中断标志脚 comm //uint32_t extiPort; // 中断端口 //uint32_t extiPin; // 中断管脚 comm //uint8_t extiPinSource; // //uint8_t extiIRQn; // 中断源 // uint8_t outputPort; uint8_t comPort[4]; uint8_t comPin[4]; }__attribute__((packed))extiMsg_t; extern extiMsg_t g_extimsg; // 中断信息 typedef enum { IDENTITY_SLAVE = 0x01, // 从设备 IDENTITY_MASTER = 0x02, // 主设备 }Identity; extern Identity g_iDentity; // 身份信息 主或从 typedef struct _dev_reset_msg_{ uint8_t resetflag; uint32_t resetNum; }__attribute__((packed))DevResetMsg; extern DevResetMsg g_devResetMsg; typedef struct _dev_pt_msg_{ uint16_t firstPowerUp; // 是否为第一次上电 0x5A5A 说明已经上过电 uint8_t eepromVer; // eeprom 的版本 uint8_t binit; // 是否初始化 uint32_t devSn; // 设备SN uint16_t devType1; // 设备类型 uint16_t devfactory; // 设备厂家信息 uint16_t seqNo ; // 生产批次号 uint32_t data; // 生产日期 uint8_t pcbVersion; // 硬件(PCB)版本 uint32_t sqare; //备用 }__attribute__((packed))DevPtMsg; extern DevPtMsg g_devPtMsg; typedef struct _dev_app_version_{ uint32_t bootVer; uint32_t ptVer; uint32_t app1Ver; uint32_t app2Ver; uint32_t app3Ver; }__attribute__((packed))DevAppVersion; extern DevAppVersion g_devAppVer; extern void set_port_pin(uint8_t cmd,uint8_t index); extern void set_port_all_pin(uint8_t cmd,uint8_t index); extern void reset_port_pin(uint8_t cmd,uint8_t index); extern void reset_port_all_pin(uint8_t cmd,uint8_t index);//0x01 02 04 08 extern uint8_t read_daout_pin(uint8_t index); extern void set_all_cs_port_status(FlagStatus status); extern void exti_gpio_init(void); extern void init_fwdgt_timer(void); extern void fwdgt_feed(uint32_t tickt); extern void board_init(void); extern void uart_init(void); extern uint32_t power_up_system_resettype(void); extern void gun_single_init(void); #endif