#ifndef __BSP_H #define __BSP_H #include "includes.h" #define GD32F10X_ID_ADDR 0x1FFFF7E8 #define GD32F30X_ID_ADDR 0x1FFFF7E8 extern uint32_t mcuID[3]; void cpuidGetId(void); #define WATCHDOG_RESET_MAX_TIMES 5 typedef struct _sys_eeprom_info { uint32_t DevType; uint32_t DevId; uint32_t NewVerFlag; //0: normal; 1: update, has new version. uint32_t WdgRestCnt; uint32_t SftRestCnt; uint32_t PorRestCnt; uint32_t APP1Ver; uint32_t APP2Ver; uint32_t APP3Ver; } sys_eeprom_info_t; /**********************************************/ typedef enum AIR_STATE_ENUM { air_state_rcv, air_state_send } AIR_STATE_ENUM; extern uint8_t air_state; //extern uint8_t lora_rcv[128]; extern uint8_t lora_flag; extern uint16_t lora_rcv_len; /**********************************************/ #define GATEWAY_ALRD 01 #define GATEWAY_INFO_ADDR 0x300 //#define RS485_RX() {GPIO_ResetBits(GPIOB, GPIO_Pin_9);} //#define RS485_TX() {GPIO_SetBits(GPIOB, GPIO_Pin_9);} #define RS485_RX() {GPIO_ResetBits(GPIOA, GPIO_Pin_1);} #define RS485_TX() {GPIO_SetBits(GPIOA, GPIO_Pin_1);} #define LED_RUN_ON() {GPIO_ResetBits(GPIOC, GPIO_Pin_2);} #define LED_RUN_OFF() {GPIO_SetBits(GPIOC, GPIO_Pin_2);} #define LED_MOD_ON() {GPIO_ResetBits(GPIOC, GPIO_Pin_1);} #define LED_MOD_OFF() {GPIO_SetBits(GPIOC, GPIO_Pin_1);} #define LED_RUN PCout(2) #define LED_MOD PCout(1) #define KEY2 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_12)//读取按键0 #define KEY1 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_13)//读取按键1 #define KEY0 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_14)//读取按键2 #define KEY0_PRES 1 //KEY0按下 #define KEY1_PRES 2 //KEY1按下 #define KEY2_PRES 3 //KEY2按下 #define WKUP_PRES 4 //KEY_UP按下(即WK_UP/KEY_UP) #define USIM0_H() {GPIO_SetBits(GPIOC, GPIO_Pin_9);} #define USIM0_L() {GPIO_ResetBits(GPIOC, GPIO_Pin_9);} #define USIM1_H() {GPIO_SetBits(GPIOA, GPIO_Pin_8);} #define USIM1_L() {GPIO_ResetBits(GPIOA, GPIO_Pin_8);} #define USIM3_CD GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_3)//读取USIM3_CD #define USIM2_CD GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_4)//读取USIM2_CD #define USIM1_CD GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_5)//读取USIM1_CD #define USIM3_PWR_ON() {GPIO_SetBits(GPIOC, GPIO_Pin_6);} #define USIM3_PWR_OFF() {GPIO_ResetBits(GPIOC, GPIO_Pin_6);} #define USIM2_PWR_ON() {GPIO_SetBits(GPIOC, GPIO_Pin_7);} #define USIM2_PWR_OFF() {GPIO_ResetBits(GPIOC, GPIO_Pin_7);} #define USIM1_PWR_ON() {GPIO_SetBits(GPIOC, GPIO_Pin_8);} #define USIM1_PWR_OFF() {GPIO_ResetBits(GPIOC, GPIO_Pin_8);} enum _RESET_FLAG_{ RESET_PINRST = 0x01, // NRST 引脚复位 RESET_PORRSTF = 0x02, // 上电掉电复位 RESET_SFTRSTF = 0x04, // 软件复位 RESET_IWDGRSTF = 0x08, //独立看门狗复位 RESET_WWDGRSTF = 0x10, // 窗口看门狗复位 RESET_LPWRRSTF = 0x20, // 低功耗复位 }; //#define LED_ON() {GPIO_SetBits(GPIOE, GPIO_Pin_14);} //#define LED_OFF() {GPIO_ResetBits(GPIOE, GPIO_Pin_14);} //#define LED_RUN PEout(14) //#define SW_POS1_ON() {GPIO_ResetBits(GPIOD, GPIO_Pin_3);} //#define SW_POS1_OFF() {GPIO_SetBits(GPIOD, GPIO_Pin_3);} //#define SW_POS2_ON() {GPIO_ResetBits(GPIOD, GPIO_Pin_4);} //#define SW_POS2_OFF() {GPIO_SetBits(GPIOD, GPIO_Pin_4);} //#define SW_ITSY1_ON() {GPIO_SetBits(GPIOD, GPIO_Pin_5);} //#define SW_ITSY1_OFF() {GPIO_ResetBits(GPIOD, GPIO_Pin_5);} //#define SW_ITSY2_ON() {GPIO_SetBits(GPIOD, GPIO_Pin_6);} //#define SW_ITSY2_OFF() {GPIO_ResetBits(GPIOD, GPIO_Pin_6);} //#define LED_ON_ALL() {GPIO_ResetBits(GPIOD, GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);\ // GPIO_ResetBits(GPIOC, GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9);} //#define LED_OFF_ALL() {GPIO_SetBits(GPIOD, GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);\ // GPIO_SetBits(GPIOC, GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9);} //#define LED0_ON() {GPIO_ResetBits(GPIOD, GPIO_Pin_12);} //#define LED0_OFF() {GPIO_SetBits(GPIOD, GPIO_Pin_12);} //#define LED1_ON() {GPIO_ResetBits(GPIOD, GPIO_Pin_13);} //#define LED1_OFF() {GPIO_SetBits(GPIOD, GPIO_Pin_13);} //#define LED2_ON() {GPIO_ResetBits(GPIOD, GPIO_Pin_14);} //#define LED2_OFF() {GPIO_SetBits(GPIOD, GPIO_Pin_14);} //#define LED3_ON() {GPIO_ResetBits(GPIOD, GPIO_Pin_15);} //#define LED3_OFF() {GPIO_SetBits(GPIOD, GPIO_Pin_15);} //#define LED4_ON() {GPIO_ResetBits(GPIOC, GPIO_Pin_6);} //#define LED4_OFF() {GPIO_SetBits(GPIOC, GPIO_Pin_6);} //#define LED5_ON() {GPIO_ResetBits(GPIOC, GPIO_Pin_7);} //#define LED5_OFF() {GPIO_SetBits(GPIOC, GPIO_Pin_7);} //#define LED6_ON() {GPIO_ResetBits(GPIOC, GPIO_Pin_8);} //#define LED6_OFF() {GPIO_SetBits(GPIOC, GPIO_Pin_8);} //#define LED7_ON() {GPIO_ResetBits(GPIOC, GPIO_Pin_9);} //#define LED7_OFF() {GPIO_SetBits(GPIOC, GPIO_Pin_9);} //#define KEY0 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8)//读取按键0 //#define KEY0_PRES 1 //KEY0按下 //#define KEY1_PRES 2 //KEY1按下 //#define KEY2_PRES 3 //KEY2按下 //#define WKUP_PRES 4 //KEY_UP按下(即WK_UP/KEY_UP) #define OFFSET_OF(type, member) ((int)(size_t)&(((type *)0)->member)) #define CONTAINER_OF(ptr, type, member) \ ((type *)(void *)(((char *)(ptr)) - OFFSET_OF(type, member))) #define BOOT_LOGO_INFO \ "\r\n" \ "********************************************************\r\n" \ "* Copyright (c) GoldenBean Technology Co.,Ltd. *\r\n" \ "* All rights Reserved. *\r\n" \ "********************************************************\r\n" void BSP_Init(void); void data_dump(const char *name, uint8_t *data, uint16_t length); void SysTick_init(void); void board_info_get(uint16_t *flash_size, uint16_t *ram_size, uint8_t * chip_id); int adc_test(void); void system_info_update_pos(uint32_t pos, uint32_t value); void system_info_update(sys_eeprom_info_t *p_info); void system_info_get(sys_eeprom_info_t *p_info); uint8_t KEY_Scan(uint8_t mode); extern uint8_t check_usim_status(uint8_t type); void sim_switch(uint8_t code); void gateway_power_info_get(void); extern uint32_t system_reset_flag_get(void); extern void getcpuTypeIdcode(void); #endif