// // Created by dell on 24-9-23. // #ifndef ULTRASONIC_DRIVER_H #define ULTRASONIC_DRIVER_H #include "gd32e23x.h" #define POWER_SUPPLY_12V // #define POWER_SUPPLY_24V #ifdef POWER_SUPPLY_12V #define POWER_VOLTAGE "12V" #define TIME_CORRECTION_US 250 #define CAPTURE_VALUE_MAX 515 #elif defined(POWER_SUPPLY_24V) #define POWER_VOLTAGE "24V" #define TIME_CORRECTION_US 230 #define CAPTURE_VALUE_MAX 550 #else #error "Please define either POWER_SUPPLY_12V or POWER_SUPPLY_24V" #endif #define ULTRASONIC_CYCLES 0x05U #define ULTRASONIC_TRAN_US 498 // (ms) #define LED_PORT GPIOA #define LED_PIN GPIO_PIN_9 #define LED_RCU RCU_GPIOA #define LED_TIMER_RCU RCU_TIMER5 #define LED_TIMER TIMER5 #define LED_IRQ TIMER5_IRQn #define USART_RCU RCU_USART0 #define USART_GPIO_RCU RCU_GPIOA #define USART_GPIO_PORT GPIOA #define USART_TX_PIN GPIO_PIN_2 #define USART_RX_PIN GPIO_PIN_3 #define USART0_PHY USART0 #define USART_BAUDRATE 115200U #define USART_EN_PIN GPIO_PIN_4 #define US_TRAN_GPIO_RCU RCU_GPIOB #define US_TRAN_GPIO_PORT GPIOB #define US_TRAN_PIN GPIO_PIN_1 #define US_TRAN_AF GPIO_AF_0 #define US_TRAN_RCU RCU_TIMER13 #define US_TRAN_TIMER TIMER13 #define US_TRAN_CH TIMER_CH_0 #define US_TRAN_DELAY_RCU RCU_TIMER15 #define US_TRAN_DELAY_TIMER TIMER15 #define US_FB_GPIO_RCU RCU_GPIOA #define US_FB_EXTI_RCU RCU_CFGCMP #define US_FB_GPIO_PORT GPIOA #define US_FB_GPIO_PIN GPIO_PIN_0 #define US_FB_EXTI_IRQ EXTI0_1_IRQn #define US_FB_GPIO_EXTI EXTI_0 #define US_ECHO_RCU RCU_TIMER16 #define US_ECHO_TIMER TIMER16 #define US_ECHO_CH TIMER_CH_0 void led_config(void); void usart_config(void); void UltraSonic_GPIO_Config(void); void UltraSonic_Transmit_Config(void); void UltraSonic_PwmOut_Cycles(const uint8_t cycles); void UltraSonic_Transmit_Delay(const uint16_t micro_second); void UltraSonic_ReceExti_Config(void); void UltraSonic_EchoTimer_Config(void); void UltraSonic_Receive_Config(void); uint16_t UltraSonic_CalcDistance(uint32_t us_value); #endif //ULTRASONIC_DRIVER_H