/************************************************************************ Project: Welling Motor Control Paltform Filename: hwsetup.h Partner Filename: hwsetup.c Description: The header file of hwsetup.c Complier: IAR Embedded Workbench for ARM 8.40.2 CPU TYPE : GD32F30x ************************************************************************* Copyright (c) 2022 Welling Motor Technology(Shanghai) Co. Ltd. All rights reserved. ************************************************************************* ************************************************************************* Revising History (ECL of this file): ************************************************************************/ /************************************************************************ Beginning of File, do not put anything above here except notes Compiler Directives: ************************************************************************/ #ifndef HWSETUP_H #define HWSETUP_H #ifndef RUN_ARCH_SIM #include "gd32f30x_libopt.h" #endif #include "STLmain.h" #include "syspar.h" #ifdef __cplusplus extern "C" { #endif // __cplusplus /************************************************************************ Compiler Directives (N/A) ************************************************************************/ #ifdef _HWSETUP_C_ #define _HWSETUP_EXT #else #define _HWSETUP_EXT extern #endif /************************************************************************ Definitions & Macros ************************************************************************/ /* Frequency & time setting define */ #define CORECLK_KHZ CLK_CORE_KHZ // Internal Clock #define AHBCLK_KHZ CLK_AHB_KHZ // AHB Clock #define APB1CLK_KHZ CLK_APB1_KHZ // APB1 Clock #define APB2CLK_KHZ CLK_APB2_KHZ // APB2 Clock #define TIM0CLK_KHZ CLK_TIM0_KHZ // TIM0 Clock #define TIM1CLK_KHZ (CLK_TIM0_KHZ /100) #define TIM2CLK_KHZ CLK_TIM0_KHZ #define TIM5CLK_KHZ (CLK_TIM0_KHZ / 2 ) /* Timer2 for switchhall */ #define TIM2CNTCLK_KHZ 72 // not use /* Time task base use TIMER5 */ #define HW_1MS_PERIOD TIM5CLK_KHZ /* PWM period define */ #define HW_PWM_PERIOD (TIM0CLK_KHZ * 1000 / FPWM_HZ) #define HW_HPWM_PERIOD (HW_PWM_PERIOD / 2) #define HW_HHPWM_PERIOD (HW_HPWM_PERIOD / 2) #define HW_HHHPWM_PERIOD (HW_HHPWM_PERIOD / 2) #define HW_PWM_PERIOD_INV (((ULONG)1 << 21) / HW_PWM_PERIOD) // Q21 /* ADC trigger time */ #define HW_ADC_TRI_TIME_US 10 /* unit: 0.1us */ /* Timer0 DMA number */ #define TIM1_DMA_NUM 6 /* ADC DMA number */ #define ADC0_DMA_NUM 8 #define ADC1_DMA_NUM 1 #define ADC2_DMA_NUM 7 /* Interrupt ON/OFF define */ #define ENABLE_IRQ stl_voEnableIrq() #define DISABLE_IRQ stl_voDisableIrq() /* IPM fault flag define */ #define MCU_BRKIN_FLG (TIMER_INTF(TIMER0) & 0x0080) #define MCU_BRKIN_FLG_CLR (TIMER_INTF(TIMER0) &= ~0x0080) #define MCU_POEN_FLG_EN (TIMER_CCHP(TIMER0) |= 0x00008000) /* SPI CS enable */ #define IO_SPI2_NSS_DISABLE (GPIO_OCTL(GPIOD)|= 0x0004) #define IO_SPI2_NSS_ENABLE (GPIO_OCTL(GPIOD)&= ~0x0004) /* I2C Write2EE enable */ #define IO_WRITE2EE_DISABLE (GPIO_OCTL(GPIOC)|= 0x1000) #define IO_WRITE2EE_ENABLE (GPIO_OCTL(GPIOC) &= ~0x1000) /* Bike brake state */ #define IO_BIKEBRAKE_STATE (GPIO_ISTAT(GPIOC) & 0x4000) #define IO_CANDANCEDIR_STATE (GPIO_ISTAT(GPIOB) & 0x0004) /* Bike light on/off */ #define IO_BIKELIGHT_FRONT_ON (GPIO_OCTL(GPIOC) |= 0x8000) #define IO_BIKELIGHT_FRONT_OFF (GPIO_OCTL(GPIOC) &= ~0x8000) #define IO_BIKELIGHT_FRONT_12V_ENABLE (GPIO_OCTL(GPIOC) |= 0x2000) #define IO_BIKELIGHT_FRONT_12V_DISABLE (GPIO_OCTL(GPIOC) &= ~0x2000) #define IO_BIKELIGHT_REAR_ON (GPIO_OCTL(GPIOC) |= 0x0100) #define IO_BIKELIGHT_REAR_OFF (GPIO_OCTL(GPIOC) &= ~0x0100) #define IO_BIKELIGHT_REAR_12V_ENABLE (GPIO_OCTL(GPIOC) |= 0x0080) #define IO_BIKELIGHT_REAR_12V_DISABLE (GPIO_OCTL(GPIOC) &= ~0x0080) /* Power lock on/off */ #define IO_POWERLOCK_ON (GPIO_OCTL(GPIOC) |= 0x0002) #define IO_POWERLOCK_OFF (GPIO_OCTL(GPIOC) &= ~0x0002) #define IO_POWER_STATE (GPIO_ISTAT(GPIOC) & 0x0001) /* TIMER1 capture value */ #define TIMER1_CAP_BIKESPD TIMER_CH3CV(TIMER1) #define TIMER1_CAP_CANDANCE TIMER_CH2CV(TIMER1) /************************************************************************ TypeDefs & Structure defines (N/A) ************************************************************************/ /************************************************************************ Constant Table *************************************************************************/ /************************************************************************ Exported Variables ************************************************************************/ #ifdef _HWSETUP_C_ _HWSETUP_EXT BOOL hw_blPWMOnFlg = FALSE; _HWSETUP_EXT BOOL hw_blChrgOvrFlg = FALSE; _HWSETUP_EXT UWORD hw_uwChrgCt = 0; _HWSETUP_EXT UWORD hw_uwPWMCmpr[TIM1_DMA_NUM]; _HWSETUP_EXT UWORD hw_uwADC0[ADC0_DMA_NUM]; _HWSETUP_EXT UWORD hw_uwADC1[ADC1_DMA_NUM]; _HWSETUP_EXT UWORD hw_uwADC2[ADC2_DMA_NUM]; #else _HWSETUP_EXT BOOL hw_blPWMOnFlg; _HWSETUP_EXT BOOL hw_blChrgOvrFlg; _HWSETUP_EXT UWORD hw_uwChrgCt; _HWSETUP_EXT UWORD hw_uwPWMCmpr[TIM1_DMA_NUM]; _HWSETUP_EXT UWORD hw_uwADC0[ADC0_DMA_NUM]; _HWSETUP_EXT UWORD hw_uwADC1[ADC1_DMA_NUM]; _HWSETUP_EXT UWORD hw_uwADC2[ADC2_DMA_NUM]; #endif /************************************************************************ RAM ALLOCATION (N/A) ************************************************************************/ /************************************************************************ Exported Function Call Prototypes ************************************************************************/ #ifdef _HWSETUP_C_ _HWSETUP_EXT void hw_voHardwareSetup1(void); _HWSETUP_EXT void hw_voHardwareSetup2(void); _HWSETUP_EXT void hw_voInitSysCtrl(void); _HWSETUP_EXT void hw_voInitInt(void); _HWSETUP_EXT void hw_voInitPeri(void); _HWSETUP_EXT void hw_voInitGPIO(void); _HWSETUP_EXT void hw_voEnInt(void); _HWSETUP_EXT void hw_voTimEn(void); _HWSETUP_EXT void hw_voInitDMA(void); _HWSETUP_EXT void hw_voInitADC(void); _HWSETUP_EXT void hw_voInitTim0(void); _HWSETUP_EXT void hw_voInitTim1(void); _HWSETUP_EXT void hw_voInitTim2(void); _HWSETUP_EXT void hw_voInitTim3(void); _HWSETUP_EXT void hw_voInitTim5(void); _HWSETUP_EXT void hw_voInitTim6(void); _HWSETUP_EXT void hw_voInitUART3(void); _HWSETUP_EXT void hw_voInitSPI2(void); _HWSETUP_EXT void hw_voInitI2C0(void); _HWSETUP_EXT void hw_voInitSysTick(void); _HWSETUP_EXT void hw_voInitCAN(void); _HWSETUP_EXT void hw_voPWMInit(void); _HWSETUP_EXT void hw_voPWMOn(void); _HWSETUP_EXT void hw_voPWMOff(void); _HWSETUP_EXT void hw_voCharge(void); _HWSETUP_EXT void hw_voThrPhsShrt(void); _HWSETUP_EXT void hw_voIWDGInit(UWORD prer, UWORD rlr); _HWSETUP_EXT void hw_voInitEXTI(void); #else _HWSETUP_EXT void hw_voHardwareSetup1(void); _HWSETUP_EXT void hw_voHardwareSetup2(void); _HWSETUP_EXT void hw_voEnInt(void); _HWSETUP_EXT void hw_voTimEn(void); _HWSETUP_EXT void hw_voPWMInit(void); _HWSETUP_EXT void hw_voPWMOn(void); _HWSETUP_EXT void hw_voPWMOff(void); _HWSETUP_EXT void hw_voCharge(void); _HWSETUP_EXT void hw_voThrPhsShrt(void); _HWSETUP_EXT void hw_voIWDGInit(UWORD prer, UWORD rlr); #endif /************************************************************************ Flag Define (N/A) ************************************************************************/ #ifdef __cplusplus } #endif // __cplusplus #endif /************************************************************************ Copyright (c) 2022 Welling Motor Technology(Shanghai) Co. Ltd. All rights reserved. ************************************************************************* End of this File (EOF)! Do not put anything after this part! ************************************************************************/