diff --git a/inc/usonic_driver.h b/inc/usonic_driver.h index ad941ba..2f8e64a 100644 --- a/inc/usonic_driver.h +++ b/inc/usonic_driver.h @@ -7,12 +7,32 @@ #include "gd32e23x.h" +#define LED_PORT GPIOA +#define LED_PIN GPIO_PIN_9 +#define LED_RCU RCU_GPIOA +#define LED_TIMER TIMER13 +#define LED_IRQ TIMER13_IRQn + +#define USART_RCU RCU_USART0 +#define USART_GPIO_RCU RCU_GPIOA +#define USARET_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 US_TRAN_GPIO_RCU RCU_GPIOB +#define US_TRAN_GPIO_PORT GPIOB +#define US_TRAN_PIN GPIO_PIN_1 + +#define US_TRAN_RCU RCU_TIMER2 +#define US_TRAN_TIMER TIMER2 +#define US_TRAN_CH TIMER_CH_3 + void led_config(void); void usart_config(void); -void ultrasonic_gpio_config(void); -void ultrasonic_timer_config(void); void ultrasonic_config(void); +void ultrasonic_peripheral_config(void); void ultrasonic_pwm_out_cycles(uint8_t cycles); - #endif //USONIC_DRIVER_H diff --git a/src/main.c b/src/main.c index 8ebb333..0a77175 100644 --- a/src/main.c +++ b/src/main.c @@ -25,7 +25,7 @@ int main(void) /* configure systick */ systick_config(); /* configure ultrasonic board hardware */ - ultrasonic_config(); + ultrasonic_peripheral_config(); /* ---------- debug start ---------- */ diff --git a/src/ultrasonic_driver.c b/src/ultrasonic_driver.c index 71569ab..188ef6f 100644 --- a/src/ultrasonic_driver.c +++ b/src/ultrasonic_driver.c @@ -10,11 +10,11 @@ uint8_t speed_pwm = 30; //bldc default pwm is 30 void led_config(void) { - rcu_periph_clock_enable(RCU_GPIOA); + rcu_periph_clock_enable(LED_RCU); - gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_9); - gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9); - gpio_bit_write(GPIOA, GPIO_PIN_9, SET); + gpio_mode_set(LED_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, LED_PIN); + gpio_output_options_set(LED_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, LED_PIN); + gpio_bit_write(LED_PORT, LED_PIN, SET); rcu_periph_clock_enable(RCU_TIMER13); timer_deinit(RCU_TIMER13); @@ -26,53 +26,47 @@ void led_config(void) timer_initpara.counterdirection =TIMER_COUNTER_UP; timer_initpara.period =999; timer_initpara.clockdivision =TIMER_CKDIV_DIV1; - timer_init(TIMER13, &timer_initpara); + timer_init(LED_TIMER, &timer_initpara); - timer_auto_reload_shadow_enable(TIMER13); - timer_interrupt_enable(TIMER13, TIMER_INT_UP); - nvic_irq_enable(TIMER13_IRQn, 0); - timer_enable(TIMER13); + timer_auto_reload_shadow_enable(LED_TIMER); + timer_interrupt_enable(LED_TIMER, TIMER_INT_UP); + nvic_irq_enable(LED_IRQ, 0); + timer_enable(LED_TIMER); } void usart_config(void) { - rcu_periph_clock_enable(RCU_GPIOA); - rcu_periph_clock_enable(RCU_USART0); + rcu_periph_clock_enable(USART_GPIO_RCU); + rcu_periph_clock_enable(USART_RCU); - gpio_af_set(GPIOA, GPIO_AF_1, GPIO_PIN_2 | GPIO_PIN_3); + gpio_af_set(USARET_GPIO_PORT, GPIO_AF_1, GPIO_PIN_2 | GPIO_PIN_3); /* configure USART Tx as alternate function push-pull */ - gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_2); - gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_2); - - gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_3); - gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_3); + gpio_mode_set(USARET_GPIO_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP, USART_TX_PIN | USART_RX_PIN); + gpio_output_options_set(USARET_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, USART_TX_PIN | USART_RX_PIN); /* USART configure */ - usart_deinit(USART0); - usart_baudrate_set(USART0, 115200U); - usart_receive_config(USART0, USART_RECEIVE_ENABLE); - usart_transmit_config(USART0, USART_TRANSMIT_ENABLE); + usart_deinit(USART0_PHY); + usart_baudrate_set(USART0_PHY, USART_BAUDRATE); + usart_receive_config(USART0_PHY, USART_RECEIVE_ENABLE); + usart_transmit_config(USART0_PHY, USART_TRANSMIT_ENABLE); - usart_enable(USART0); + usart_enable(USART0_PHY); } -void ultrasonic_gpio_config(void) +void ultrasonic_config(void) { - rcu_periph_clock_enable(RCU_GPIOB); + rcu_periph_clock_enable(US_TRAN_GPIO_RCU); - gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_1); - gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_1); - gpio_af_set(GPIOB, GPIO_AF_1, GPIO_PIN_1); -} + gpio_mode_set(US_TRAN_GPIO_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, US_TRAN_PIN); + gpio_output_options_set(US_TRAN_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, US_TRAN_PIN); + gpio_af_set(US_TRAN_GPIO_PORT, GPIO_AF_1, US_TRAN_PIN); -void ultrasonic_timer_config(void) -{ timer_oc_parameter_struct timer_ocinitpara; timer_parameter_struct timer_initpara; - rcu_periph_clock_enable(RCU_TIMER2); - timer_deinit(TIMER2); + rcu_periph_clock_enable(US_TRAN_RCU); + timer_deinit(US_TRAN_TIMER); timer_struct_para_init(&timer_initpara); timer_initpara.prescaler = 0; @@ -80,7 +74,7 @@ void ultrasonic_timer_config(void) timer_initpara.counterdirection = TIMER_COUNTER_UP; timer_initpara.period = 239; timer_initpara.clockdivision = TIMER_CKDIV_DIV1; - timer_init(TIMER2, &timer_initpara); + timer_init(US_TRAN_TIMER, &timer_initpara); timer_channel_output_struct_para_init(&timer_ocinitpara); timer_ocinitpara.outputstate =TIMER_CCX_ENABLE; @@ -89,42 +83,40 @@ void ultrasonic_timer_config(void) timer_ocinitpara.ocnpolarity =TIMER_OCN_POLARITY_HIGH; timer_ocinitpara.ocidlestate =TIMER_OC_IDLE_STATE_LOW; timer_ocinitpara.ocnidlestate =TIMER_OCN_IDLE_STATE_LOW; - timer_channel_output_config(TIMER2, TIMER_CH_3, &timer_ocinitpara); + timer_channel_output_config(US_TRAN_TIMER, US_TRAN_CH, &timer_ocinitpara); - timer_channel_output_pulse_value_config(TIMER2, TIMER_CH_3, 120); - timer_channel_output_mode_config(TIMER2, TIMER_CH_3, TIMER_OC_MODE_PWM0); - timer_auto_reload_shadow_enable(TIMER2); + timer_channel_output_pulse_value_config(US_TRAN_TIMER, US_TRAN_CH, 120); + timer_channel_output_mode_config(US_TRAN_TIMER, US_TRAN_CH, TIMER_OC_MODE_PWM0); + timer_auto_reload_shadow_enable(US_TRAN_TIMER); - timer_interrupt_enable(TIMER2, TIMER_INT_UP); + timer_interrupt_enable(US_TRAN_TIMER, TIMER_INT_UP); // nvic_irq_enable(TIMER2_IRQn, 1); // timer_enable(TIMER2); } -void ultrasonic_config(void) { +void ultrasonic_peripheral_config(void) { led_config(); usart_config(); - ultrasonic_gpio_config(); - ultrasonic_timer_config(); + ultrasonic_config(); } void ultrasonic_pwm_out_cycles(uint8_t cycles) { uint8_t current_cycle = 0; - timer_channel_output_pulse_value_config(TIMER2, TIMER_CH_3, 120); - timer_channel_output_mode_config(TIMER2, TIMER_CH_3, TIMER_OC_MODE_PWM1); - timer_enable(TIMER2); + timer_channel_output_pulse_value_config(US_TRAN_TIMER, US_TRAN_CH, 120); + timer_channel_output_mode_config(US_TRAN_TIMER, US_TRAN_CH, TIMER_OC_MODE_PWM1); + timer_enable(US_TRAN_TIMER); while (current_cycle < cycles) { - while (!timer_interrupt_flag_get(TIMER2, TIMER_INT_FLAG_UP)); - timer_interrupt_flag_clear(TIMER2, TIMER_INT_FLAG_UP); + while (!timer_interrupt_flag_get(US_TRAN_TIMER, TIMER_INT_FLAG_UP)); + timer_interrupt_flag_clear(US_TRAN_TIMER, TIMER_INT_FLAG_UP); current_cycle ++; } // delay_nop(); - timer_disable(TIMER2); + timer_disable(US_TRAN_TIMER); // if(gpio_output_bit_get(GPIOB, GPIO_PIN_1) == SET) // { // gpio_bit_reset(GPIOB, GPIO_PIN_1); // } } -