#ifndef __BSP_GD32_H__
#define __BSP_GD32_H__
#if defined (GD32F30X_HD) || defined (GD32F30X_XD) || defined (GD32F30X_CL)
#include "gd32f30x.h"
#elif defined GD32E10x
#include "gd32e10x.h"
#endif

#define SYSTEM_CLOCK (120000000u) //system clk 120M Hz
#define TIM_CLOCK (SYSTEM_CLOCK) /*SystemClock_Config��TIM1��clk��sys PLL �������̶�2����PLLƵ��*/
#define TIM_CLOCK_MHz (120u)
#define ADC_CLOCK (30000000u)
#define ADC_CLOCK_MHz (30u)
#define NS_PER_TCLK (8u) /* (1/120000000 * 1000000000) */
#define NS_2_TCLK(ns) (((ns)/NS_PER_TCLK) + 1u) //ns תΪpwmʹ�õ��Ǹ�TIM��clk count
#define FOC_PWM_FS (16000u)
#define FOC_PWM_period (TIM_CLOCK/FOC_PWM_FS)
#define FOC_PWM_Half_Period (FOC_PWM_period/2)

#define FOC_CTRL_US (1.0f/(float)FOC_PWM_FS)

#define ADC_REGCHAN_SAMPLE_TIME ADC_SAMPLETIME_71POINT5
#define ADC_TRIG_CONV_LATENCY_CYCLES 12.5f
#define ADC_SAMPLING_CYCLES 13.5f

#ifdef GD32_FOC_DEMO
#include "bsp/board_gd32demo.h"
#elif defined (YUANQU_HW_V1)
#include "bsp/board_yuanqu.h"
#elif defined (MC100_HW_V1)
#include "bsp/gd32/board_mc100_v1.h"
#define CONFIG_BOARD_MCXXX
#define CONFIG_BOARD_NAME "MC100"
#define CONFIG_HW_VERSION 2
#elif defined (MC105_HW_V3)
#include "bsp/gd32/board_mc105_v3.h"
#define CONFIG_BOARD_MCXXX
#define CONFIG_BOARD_NAME "MC105"
#define CONFIG_HW_VERSION 3
#endif
#endif /* __BSP_GD32_H__ */
