// // Created by dell on 24-9-23. // #ifndef ULTRASONIC_DRIVER_H #define ULTRASONIC_DRIVER_H #include "gd32e23x.h" #include "i2c.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 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 ultrasonic_gpio_config(void); void ultrasonic_pwm_out_cycles(const uint8_t cycles); void ultrasonic_transmit_delay(const uint16_t micro_second); void ultrasonic_rece_exti_Config(void); void ultrasonic_echo_timer_config(void); void ultrasonic_receive_config(void); uint16_t ultrasonic_calc_distance(uint32_t us_value); #endif //ULTRASONIC_DRIVER_H