145 lines
4.4 KiB
C
145 lines
4.4 KiB
C
#include "gd32vf103.h"
|
|
#include "usart.h"
|
|
void usart0_init(int baud)
|
|
{
|
|
eclic_priority_group_set(ECLIC_PRIGROUP_LEVEL3_PRIO1);
|
|
eclic_irq_enable(USART0_IRQn, 1, 0);
|
|
|
|
|
|
/* enable GPIO clock */
|
|
rcu_periph_clock_enable(RCU_GPIOA);
|
|
|
|
/* enable USART0 clock */
|
|
rcu_periph_clock_enable(RCU_USART0);
|
|
|
|
/* connect port to USART0_Tx */
|
|
gpio_init(USART0_GPIO_PORT, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, USART0_GPIO_TX_PIN);
|
|
|
|
/* connect port to USART0_Rx */
|
|
gpio_init(USART0_GPIO_PORT, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, USART0_GPIO_RX_PIN);
|
|
|
|
/* USART0 configure */
|
|
usart_deinit(USART0);
|
|
usart_baudrate_set(USART0, baud);
|
|
usart_word_length_set(USART0, USART_WL_8BIT);
|
|
usart_stop_bit_set(USART0, USART_STB_1BIT);
|
|
usart_parity_config(USART0, USART_PM_NONE);
|
|
usart_hardware_flow_rts_config(USART0, USART_RTS_DISABLE);
|
|
usart_hardware_flow_cts_config(USART0, USART_CTS_DISABLE);
|
|
usart_receive_config(USART0, USART_RECEIVE_ENABLE);
|
|
usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);
|
|
usart_enable(USART0);
|
|
|
|
usart_interrupt_enable(USART0, USART_INT_RBNE);
|
|
}
|
|
|
|
void usart1_init(int baud)
|
|
{
|
|
eclic_irq_enable(USART1_IRQn, 1, 0);
|
|
|
|
/* enable GPIO clock */
|
|
rcu_periph_clock_enable(RCU_GPIOA);
|
|
|
|
/* enable USART1 clock */
|
|
rcu_periph_clock_enable(RCU_USART1);
|
|
|
|
/* connect port to USART0_Tx */
|
|
gpio_init(USART1_GPIO_PORT, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, USART1_GPIO_TX_PIN);
|
|
|
|
/* connect port to USART0_Rx */
|
|
gpio_init(USART1_GPIO_PORT, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, USART1_GPIO_RX_PIN);
|
|
|
|
/* USART1 configure */
|
|
usart_deinit(USART1);
|
|
usart_baudrate_set(USART1, baud);
|
|
usart_word_length_set(USART1, USART_WL_8BIT);
|
|
usart_stop_bit_set(USART1, USART_STB_1BIT);
|
|
usart_parity_config(USART1, USART_PM_NONE);
|
|
usart_hardware_flow_rts_config(USART1, USART_RTS_DISABLE);
|
|
usart_hardware_flow_cts_config(USART1, USART_CTS_DISABLE);
|
|
usart_receive_config(USART1, USART_RECEIVE_ENABLE);
|
|
usart_transmit_config(USART1, USART_TRANSMIT_ENABLE);
|
|
usart_enable(USART1);
|
|
|
|
usart_interrupt_enable(USART1, USART_INT_RBNE);
|
|
|
|
}
|
|
|
|
void usart2_init(int baud)
|
|
{
|
|
//eclic_irq_enable(USART2_IRQn, 1, 0);
|
|
|
|
/* enable GPIO clock */
|
|
rcu_periph_clock_enable(RCU_GPIOB);
|
|
|
|
/* enable USART2 clock */
|
|
rcu_periph_clock_enable(RCU_USART2);
|
|
|
|
/* connect port to USART0_Tx */
|
|
gpio_init(USART2_GPIO_PORT, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, USART2_GPIO_TX_PIN);
|
|
|
|
/* connect port to USART0_Rx */
|
|
gpio_init(USART2_GPIO_PORT, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, USART2_GPIO_RX_PIN);
|
|
|
|
//gpio_pin_remap_config(GPIO_USART2_FULL_REMAP,ENABLE);
|
|
|
|
/* USART1 configure */
|
|
usart_deinit(USART2);
|
|
usart_baudrate_set(USART2, baud);
|
|
usart_word_length_set(USART2, USART_WL_8BIT);
|
|
usart_stop_bit_set(USART2, USART_STB_1BIT);
|
|
usart_parity_config(USART2, USART_PM_NONE);
|
|
usart_hardware_flow_rts_config(USART2, USART_RTS_DISABLE);
|
|
usart_hardware_flow_cts_config(USART2, USART_CTS_DISABLE);
|
|
usart_receive_config(USART2, USART_RECEIVE_ENABLE);
|
|
usart_transmit_config(USART2, USART_TRANSMIT_ENABLE);
|
|
usart_enable(USART2);
|
|
|
|
|
|
//usart_interrupt_enable(USART2, USART_INT_RBNE);
|
|
}
|
|
|
|
void uart3_init(int baud)
|
|
{
|
|
eclic_irq_enable(UART3_IRQn, 1, 0);
|
|
|
|
/* enable GPIO clock */
|
|
rcu_periph_clock_enable(RCU_GPIOC);
|
|
|
|
/* enable USART2 clock */
|
|
rcu_periph_clock_enable(RCU_UART3);
|
|
|
|
/* connect port to USART0_Tx */
|
|
gpio_init(UART3_GPIO_PORT, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, UART3_GPIO_TX_PIN);
|
|
|
|
/* connect port to USART0_Rx */
|
|
gpio_init(UART3_GPIO_PORT, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, UART3_GPIO_RX_PIN);
|
|
|
|
//gpio_pin_remap_config(GPIO_USART2_FULL_REMAP,ENABLE);
|
|
|
|
/* USART1 configure */
|
|
usart_deinit(UART3);
|
|
usart_baudrate_set(UART3, baud);
|
|
usart_word_length_set(UART3, USART_WL_8BIT);
|
|
usart_stop_bit_set(UART3, USART_STB_1BIT);
|
|
usart_parity_config(UART3, USART_PM_NONE);
|
|
usart_hardware_flow_rts_config(UART3, USART_RTS_DISABLE);
|
|
usart_hardware_flow_cts_config(UART3, USART_CTS_DISABLE);
|
|
usart_receive_config(UART3, USART_RECEIVE_ENABLE);
|
|
usart_transmit_config(UART3, USART_TRANSMIT_ENABLE);
|
|
usart_enable(UART3);
|
|
|
|
|
|
usart_interrupt_enable(UART3, USART_INT_RBNE);
|
|
}
|
|
|
|
|
|
int _put_char(int ch)
|
|
{
|
|
usart_data_transmit(USART0, (uint8_t) ch );
|
|
while ( usart_flag_get(USART0, USART_FLAG_TBE)== RESET){
|
|
}
|
|
|
|
return ch;
|
|
}
|