#ifndef __BSP_H #define __BSP_H #include #include #include #include #include #include "hc32_ddl.h" /*模块启用与关闭*/ #define USE_DEBUG 1 //DEBUG开关,0、关闭,1、启用 #define USE_AD 1 //AD获取选择,0、关闭,1、启用 #define USE_WDT 0 //看门狗选择,0、关闭,1启用 #define USE_EXFALSE 0 //外部FALSE存储选择,0、关闭,1、启用 #define USE_RTC 0 //RTC时钟开关,0、关闭,1、开启 #define USE_LPTIM0 0 //LPTIM0开关,0、关闭,1、开启 #define USE_DMA 1 //DMA开关,0、关闭,1、开启 #define USE_RS485 0 //RS485开关,0、关闭,1、启用 #define USE_I2C1 0 //I2C1开关,0、关闭,1、启用 #define USE_SPI1 0 //SPI1开关,0、关闭,1、启用 #define USE_SPI3 0 //SPI3开关,0、关闭,1、启用 #define USE_USART3 1 #define USE_BOOTLOADER 0 //BOOTLOADER开关,0、关闭,1、启用 #define USE_CS1237_LEFTUP 1 //左上CS1237开关,0、关闭,1、启用 #define USE_CS1237_LEFTLOW 1 //左下CS1237开关,0、关闭,1、启用 #define USE_CS1237_RIGHTUP 1 //右上CS1237开关,0、关闭,1、启用 #define USE_CS1237_RIGHTLOW 1 //右下CS1237开关,0、关闭,1、启用 #define USE_AGC 1 //算法控制开关,0、关闭,1、启用 //<<---------------------------- MCU -------------------------------->> //< DEBUG #if(USE_DEBUG == 1) #define DBG_USART_CH (M4_USART1) #define DBG_USART_RX_PORT (PortA) #define DBG_USART_RX_PIN (Pin11) #define DBG_USART_TX_PORT (PortA) #define DBG_USART_TX_PIN (Pin12) #define DBG_USART_RX_FUNC (Func_Usart1_Rx) #define DBG_USART_TX_FUNC (Func_Usart1_Tx) #define DBG_USART_RI_NUM (INT_USART1_RI) #define DBG_USART_EI_NUM (INT_USART1_EI) #define DBG_USART_TI_NUM (INT_USART1_TI) #define DBG_USART_TCI_NUM (INT_USART1_TCI) #define DBG_FCG1_PERIPH (PWC_FCG1_PERIPH_USART1) #define DBG_RXPIN_EXIT_CH (ExtiCh13) #define DBG_RXPIN_EXIT_SRC (INT_PORT_EIRQ13) #define DBG_RX_IRQn (Int000_IRQn) #define DBG_ER_IRQn (Int001_IRQn) #endif //< USART3 //#if(USE_USART3 == 1) //#define USAR3_CH (M4_USART3) //#define USAR3_RX_PORT (PortH) //#define USAR3_RX_PIN (Pin02) //#define USAR3_TX_PORT (PortC) //#define USAR3_TX_PIN (Pin13) //#define USAR3_RX_FUNC (Func_Usart3_Rx) //#define USAR3_TX_FUNC (Func_Usart3_Tx) //#define USAR3_RI_NUM (INT_USART3_RI) //#define USAR3_EI_NUM (INT_USART3_EI) //#define USAR3_TI_NUM (INT_USART3_TI) //#define USAR3_TCI_NUM (INT_USART3_TCI) //#define USAR3_FCG1_PERIPH (PWC_FCG1_PERIPH_USART3) //#define USAR3_RXPIN_EXIT_CH (ExtiCh14) //#define USAR3_RXPIN_EXIT_SRC (INT_PORT_EIRQ14) //#define USAR3_RX_IRQn (Int006_IRQn) //#define USAR3_ER_IRQn (Int007_IRQn) //#endif #if(USE_USART3 == 1) #define USART3_CH (M4_USART3) #define USART3_RX_PORT (PortH) #define USART3_RX_PIN (Pin02) #define USART3_RX_FUNC (Func_Usart3_Rx) #define USART3_USART_RI_NUM (INT_USART3_RI) #define USART3_USART_EI_NUM (INT_USART3_EI) #define USART3_FCG1_PERIPH (PWC_FCG1_PERIPH_USART3) #define USART3_RX_IRQn (Int006_IRQn) #define USART3_ER_IRQn (Int007_IRQn) //#define USART3_RXPIN_IRQn Int002_IRQn #endif // RS485 #if(USE_RS485 == 1) #define RS485_USART_CH (M4_USART1) //#define RS485_USART_RX_PORT (PortB) //#define RS485_USART_RX_PIN (Pin08) //#define RS485_USART_TX_PORT (PortB) //#define RS485_USART_TX_PIN (Pin09) #define RS485_USART_RX_PORT (PortA) #define RS485_USART_RX_PIN (Pin15) #define RS485_USART_TX_PORT (PortA) #define RS485_USART_TX_PIN (Pin12) #define RS485_USART_RX_FUNC (Func_Usart1_Rx) #define RS485_USART_TX_FUNC (Func_Usart1_Tx) #define RS485_USART_RI_NUM (INT_USART1_RI) #define RS485_USART_EI_NUM (INT_USART1_EI) #define RS485_USART_TI_NUM (INT_USART1_TI) #define RS485_USART_TCI_NUM (INT_USART1_TCI) #define RS485_FCG1_PERIPH (PWC_FCG1_PERIPH_USART1) #define RS485_RXPIN_EXIT_CH (ExtiCh14) #define RS485_RXPIN_EXIT_SRC (INT_PORT_EIRQ14) #define RS485_CTRL_PORT (PortC) #define RS485_CTRL_PIN (Pin13) #define RS485_TX() PORT_SetBits(RS485_CTRL_PORT, RS485_CTRL_PIN) #define RS485_RX() PORT_ResetBits(RS485_CTRL_PORT, RS485_CTRL_PIN) #endif // SPI3 #if(USE_SPI3 == 1) /* SPI3_SCK Port/Pin definition */ #define SPI3_SCK_PORT (PortB) #define SPI3_SCK_PIN (Pin14) #define SPI3_SCK_FUNC (Func_Spi3_Sck) /* SPI3_MOSI Port/Pin definition */ #define SPI3_MOSI_PORT (PortB) #define SPI3_MOSI_PIN (Pin10) #define SPI3_MOSI_FUNC (Func_Spi3_Mosi) /* SPI3_MISO Port/Pin definition */ #define SPI3_MISO_PORT (PortB) #define SPI3_MISO_PIN (Pin12) #define SPI3_MISO_FUNC (Func_Spi3_Miso) /* SPI3_MOSI Port/Pin definition */ #define SPI3_NSS_PORT (PortB) #define SPI3_NSS_PIN (Pin13) #define SPI3_NSS_FUNC (Func_Spi3_Nss0) #define SPI3_NSS_SET() PORT_SetBits(SPI3_NSS_PORT, SPI3_NSS_PIN) #define SPI3_NSS_CLR() PORT_ResetBits(SPI3_NSS_PORT, SPI3_NSS_PIN) /* SPI3 unit and clock definition */ #define SPI3_UNIT (M4_SPI3) #define SPI3_UNIT_CLOCK (PWC_FCG1_PERIPH_SPI3) #endif //< RTC #if(USE_RTC == 1) #define RTC_IRQn Int001_IRQn #endif //<<----------------------------- CS1237 ------------------------------->> //< 左上 CS1237 #if(USE_CS1237_LEFTUP == 1) #define LEFTUP_CS1237_IRQn (Int001_IRQn) #define LEFTUP_CS1237_DOUT_PORTx (PortB) #define LEFTUP_CS1237_DOUT_PINx (Pin10) #define SET_LEFTUP_CS1237_DOUT() PORT_SetBits(LEFTUP_CS1237_DOUT_PORTx, LEFTUP_CS1237_DOUT_PINx)//拉高 #define CLR_LEFTUP_CS1237_DOUT() PORT_ResetBits(LEFTUP_CS1237_DOUT_PORTx, LEFTUP_CS1237_DOUT_PINx)//拉低 #define GET_LEFTUP_CS1237_DOUT() PORT_GetBit(LEFTUP_CS1237_DOUT_PORTx, LEFTUP_CS1237_DOUT_PINx) #define LEFTUP_CS1237_SCLK_PORTx (PortB) #define LEFTUP_CS1237_SCLK_PINx (Pin02) #define SET_LEFTUP_CS1237_SCLK() PORT_SetBits(LEFTUP_CS1237_SCLK_PORTx, LEFTUP_CS1237_SCLK_PINx)//拉高 #define CLR_LEFTUP_CS1237_SCLK() PORT_ResetBits(LEFTUP_CS1237_SCLK_PORTx, LEFTUP_CS1237_SCLK_PINx)//拉低 #endif //< 左下 CS1237 #if(USE_CS1237_LEFTLOW == 1) #define LEFTLOW_CS1237_IRQn (Int002_IRQn) #define LEFTLOW_CS1237_DOUT_PORTx (PortB) #define LEFTLOW_CS1237_DOUT_PINx (Pin01) #define SET_LEFTLOW_CS1237_DOUT() PORT_SetBits(LEFTLOW_CS1237_DOUT_PORTx, LEFTLOW_CS1237_DOUT_PINx)//拉高 #define CLR_LEFTLOW_CS1237_DOUT() PORT_ResetBits(LEFTLOW_CS1237_DOUT_PORTx, LEFTLOW_CS1237_DOUT_PINx)//拉低 #define GET_LEFTLOW_CS1237_DOUT() PORT_GetBit(LEFTLOW_CS1237_DOUT_PORTx, LEFTLOW_CS1237_DOUT_PINx) #define LEFTLOW_CS1237_SCLK_PORTx (PortB) #define LEFTLOW_CS1237_SCLK_PINx (Pin00) #define SET_LEFTLOW_CS1237_SCLK() PORT_SetBits(LEFTLOW_CS1237_SCLK_PORTx, LEFTLOW_CS1237_SCLK_PINx)//拉高 #define CLR_LEFTLOW_CS1237_SCLK() PORT_ResetBits(LEFTLOW_CS1237_SCLK_PORTx, LEFTLOW_CS1237_SCLK_PINx)//拉低 #endif //< 右上 CS1237 #if(USE_CS1237_RIGHTUP == 1) #define RIGHTUP_CS1237_IRQn (Int003_IRQn) #define RIGHTUP_CS1237_DOUT_PORTx (PortA) #define RIGHTUP_CS1237_DOUT_PINx (Pin04) #define SET_RIGHTUP_CS1237_DOUT() PORT_SetBits(RIGHTUP_CS1237_DOUT_PORTx, RIGHTUP_CS1237_DOUT_PINx)//拉高 #define CLR_RIGHTUP_CS1237_DOUT() PORT_ResetBits(RIGHTUP_CS1237_DOUT_PORTx, RIGHTUP_CS1237_DOUT_PINx)//拉低 #define GET_RIGHTUP_CS1237_DOUT() PORT_GetBit(RIGHTUP_CS1237_DOUT_PORTx, RIGHTUP_CS1237_DOUT_PINx) #define RIGHTUP_CS1237_SCLK_PORTx (PortA) #define RIGHTUP_CS1237_SCLK_PINx (Pin05) #define SET_RIGHTUP_CS1237_SCLK() PORT_SetBits(RIGHTUP_CS1237_SCLK_PORTx, RIGHTUP_CS1237_SCLK_PINx)//拉高 #define CLR_RIGHTUP_CS1237_SCLK() PORT_ResetBits(RIGHTUP_CS1237_SCLK_PORTx, RIGHTUP_CS1237_SCLK_PINx)//拉低 #endif //< 右下 CS1237 #if(USE_CS1237_RIGHTLOW == 1) #define RIGHTLOW_CS1237_IRQn (Int004_IRQn) #define RIGHTLOW_CS1237_DOUT_PORTx (PortA) #define RIGHTLOW_CS1237_DOUT_PINx (Pin06) #define SET_RIGHTLOW_CS1237_DOUT() PORT_SetBits(RIGHTLOW_CS1237_DOUT_PORTx, RIGHTLOW_CS1237_DOUT_PINx)//拉高 #define CLR_RIGHTLOW_CS1237_DOUT() PORT_ResetBits(RIGHTLOW_CS1237_DOUT_PORTx, RIGHTLOW_CS1237_DOUT_PINx)//拉低 #define GET_RIGHTLOW_CS1237_DOUT() PORT_GetBit(RIGHTLOW_CS1237_DOUT_PORTx, RIGHTLOW_CS1237_DOUT_PINx) #define RIGHTLOW_CS1237_SCLK_PORTx (PortA) #define RIGHTLOW_CS1237_SCLK_PINx (Pin07) #define SET_RIGHTLOW_CS1237_SCLK() PORT_SetBits(RIGHTLOW_CS1237_SCLK_PORTx, RIGHTLOW_CS1237_SCLK_PINx)//拉高 #define CLR_RIGHTLOW_CS1237_SCLK() PORT_ResetBits(RIGHTLOW_CS1237_SCLK_PORTx, RIGHTLOW_CS1237_SCLK_PINx)//拉低 #endif //< BIT0 #define TWIN_BIT0_PORTx (PortB) #define TWIN_BIT0_PINx (Pin12) #define SET_TWIN_BIT0() PORT_SetBits(TWIN_BIT0_PORTx, TWIN_BIT0_PINx)//拉高 #define CLR_TWIN_BIT0() PORT_ResetBits(TWIN_BIT0_PORTx, TWIN_BIT0_PINx)//拉低 #define GET_BIT0_DOUT() PORT_GetBit(TWIN_BIT0_PORTx, TWIN_BIT0_PINx) //< BIT1 #define TWIN_BIT1_PORTx (PortB) #define TWIN_BIT1_PINx (Pin13) #define SET_TWIN_BIT1() PORT_SetBits(TWIN_BIT1_PORTx, TWIN_BIT1_PINx)//拉高 #define CLR_TWIN_BIT1() PORT_ResetBits(TWIN_BIT1_PORTx, TWIN_BIT1_PINx)//拉低 #define GET_BIT1_DOUT() PORT_GetBit(TWIN_BIT1_PORTx, TWIN_BIT1_PINx) typedef struct { int32_t ControlLevel;//控制等级 int32_t DBGWaveOut;//调试波形输出 }__attribute__ ((packed))LayoutPara_t, *LayoutPara;//上位机下发的配置参数 typedef struct { LayoutPara_t Layout; uint32_t FactoryFlag;//出厂标志位 }AppPara_T, *pAppPara; #define SAVE_APP_PARA(addr) FlashWrite(addr, sizeof(App.Para) / 4) #define READ_APP_PARA(addr) FlashRead(addr, sizeof(App.Para) / 4) void BSP_Init(void); uint8_t DbgUartRec(void); void DebugUartSend(uint8_t *sData, uint16_t sLen); void Error_Handler(void); void FeedDog(void); void EnterStop(void); void Wakeup(void); void FlashWrite(uint32_t *wData, uint32_t wLen); void FlashRead(uint32_t *rData, uint32_t wLen); uint8_t RS485UartRec(void); void RS485UsartErrIrqCallback(void); void RS485_RxPinIntCallBack(void); void RS485UsartRxIrqCallback(void); void RS485UartSend(uint8_t *sData, uint16_t sLen); void RS485_1msRoutine(void); uint8_t Uart3Rec(void); void Usart3ErrIrqCallback(void); void Usart3_RxPinIntCallBack(void); void Usart3RxIrqCallback(void); void Usart3Send(uint8_t *sData, uint16_t sLen); void Uart3_Config(uint32_t BaudRate); void DbgUsartRxIrqCallback(void); void DBGUsartErrIrqCallback(void); void DBG_RxPinIntCallBack(void); void SysTick_IrqHandler(void); void RtcPeriod_IrqCallback(void); uint16_t SpiSendReceive(uint16_t sData); uint8_t Spi3_RWByte(M4_SPI_TypeDef *SPIx, uint8_t u8Data); en_result_t SdioInit(void); bool SDCardErase(uint32_t u32BlkStartAddr, uint32_t u32BlkEndAddr); bool SDCardReadBlocks(uint32_t u32BlkStartAddr, uint32_t u32BlkEndAddr, uint8_t *ReadBuff); bool SDCardWriteBlocks(uint32_t u32BlkStartAddr, uint32_t u32BlkEndAddr, uint8_t *WriteBuff); void ReadAdcValue(uint16_t *ADValue); void ADC_Start(void) ; void ADC_Stop(void) ; uint16_t *GetADCBuffPoint(void); uint8_t exf_getfree(uint8_t *drv,uint32_t *total,uint32_t *free); uint32_t mf_showfree(uint8_t *drv); void TimeGet(struct tm *cTime); int TimeTs(void); void TimeShow(uint32_t dwStamp); void TimeSync(time_t ts); void delay_5ns(uint32_t ns); void ExtInt10IntEnable(void); void ExtInt10IntDisable(void); void ExtInt01IntEnable(void); void ExtInt01IntDisable(void); void ExtInt04IntEnable(void); void ExtInt04IntDisable(void); void ExtInt06IntEnable(void); void ExtInt06IntDisable(void); #endif