GD32E231C8T6具有两组USART,分为USART0及USART1,其中USART0_TX与USART0_RX被复用至PA9与PA10,这两个端口正好通过Ardunio引出了,本次实验就是基于USART0;
在程序的实现上主要参考了官方的DEMO程序。另外,还参考了GD32E230固件库手册:
- void USART0_Config(void)
- {
- rcu_periph_clock_enable(USART0_PORT_CLK); //打开USART0所在GPIOA端口时钟
- rcu_periph_clock_enable(RCU_USART0); //打开USART0时钟
-
- //USART0 GPIOA配置
- gpio_mode_set(USART0_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP, USART0_TX_PIN | USART0_RX_PIN);
- gpio_output_options_set(USART0_PORT, GPIO_OTYPE_PP,GPIO_OSPEED_50MHZ, USART0_TX_PIN | USART0_RX_PIN);
- gpio_af_set(USART0_PORT, GPIO_AF_1, USART0_TX_PIN | USART0_RX_PIN);
-
- //USART0配置
- usart_deinit(USART0);
- usart_baudrate_set(USART0, 115200U); //波特率115200
- usart_word_length_set(USART0, USART_WL_8BIT); //8位数据
- usart_stop_bit_set(USART0, USART_STB_1BIT); //1位停止位
- usart_parity_config(USART0, USART_PM_NONE); //无奇偶校验
- usart_hardware_flow_rts_config(USART0, USART_RTS_DISABLE);//禁用RTS硬件流控制
- usart_hardware_flow_cts_config(USART0, USART_CTS_DISABLE);//禁用CTS硬件流控制
- usart_receive_config(USART0, USART_RECEIVE_ENABLE); //使能接收
- usart_transmit_config(USART0, USART_TRANSMIT_ENABLE); //使能发送
- usart_enable(USART0); //使能USART0
- }
- /*重定向*/
- int fputc(int ch, FILE *f)
- {
- usart_data_transmit(USART0, (uint8_t) ch);
- while(RESET == usart_flag_get(USART0, USART_FLAG_TBE));
- return ch;
- }
|