【兆易GD32F310测评】+ UART的应用
[复制链接]
本帖最后由 jinglixixi 于 2022-5-30 00:17 编辑
GD32F310配有2个 USART在内的标准和高级通信接口,使用它可以进行调试输出及串口设备间的通讯等。
1. printf输出
要实现printf输出,要涉及引脚的配置、串口通信的配置等,该工作主要有函数usart0_gpio_config()、
usart0_config()及fputc()来完成,其内容如下:
void usart0_gpio_config(void)
{
rcu_periph_clock_enable(RCU_GPIOA);
/* connect port to USARTx_Tx */
gpio_af_set(GPIOA, GPIO_AF_1, GPIO_PIN_9);
/* connect port to USARTx_Rx */
gpio_af_set(GPIOA, GPIO_AF_1, GPIO_PIN_10);
gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_9);
gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_9);
gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_10);
gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_10);
}
void usart0_config(void)
{
rcu_periph_clock_enable(RCU_USART0);
usart_deinit(USART0);
usart_word_length_set(USART0, USART_WL_8BIT);
usart_stop_bit_set(USART0, USART_STB_1BIT);
usart_parity_config(USART0, USART_PM_NONE);
usart_baudrate_set(USART0, 115200U);
usart_receive_config(USART0, USART_RECEIVE_ENABLE);
usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);
usart_enable(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;
}
有了以上函数的支持,就可实现printf输出的功能,其测试效果如图1所示。
图1 输出测试
实现输出测试的主程序为:
int main(void)
{
systick_config();
usart0_gpio_config();
usart0_config();
printf("usart transmit test example!");
while(1);
}
2. 发送字符
在串行通讯中,发送各种指令和参数是十分常见的,也是十分有用的。使用函数库中的函数usart_data_transmit)就可解决该问题,若是发送指令,还可将指令存放到数组中来简化处理。
实现发送字符的测试程序如下:
int main(void)
{
systick_config();
usart0_gpio_config();
usart0_config();
printf("usart transmit test example!");
while(1){
delay_1ms(1000);
usart_data_transmit(USART0, 'A');
}
}
经下载测试,其测试效果如图2所示,说明功能正常。
图2发送字符
3.收发处理
在串行通讯中,设备间的收发应答是十分重要的,它可以保障设备间的可靠运行。
使用接收函数usart_data_receive()即可完成收发处理的测试,其测试程序如下:
int main(void)
{
uint16_t m,p;
systick_config();
usart0_gpio_config();
usart0_config();
while(1){
m=usart_data_receive(USART0);
if(m!=p)
{
usart_data_transmit(USART0, m);
p=m;
}
}
}
进行程序下载,其测试效果如图3所示,即每发送一个不一致的字符就回显出相应的内容。
图3 字符接收与发送
|