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;
}
int main(void)
{
systick_config();
USART0_Config();
printf("GD32E231C_START USART0\r\n");
while(1)
{
}
}
实验中暂时没有接收数据实验,只是实现了发送,主要目的是为方便后面的实验。
USART0.rar
(367.35 KB)
GD32E230_gujiankuyonghuzhinan_V1.0.rar
(4.67 MB)
|