3560|9

1547

帖子

1

TA的资源

五彩晶圆(初级)

楼主
 

【兆易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 字符接收与发送

 

此帖出自GD32 MCU论坛

最新回复

感谢版主大大的分享!共同学习共同进步,加油!加油!   详情 回复 发表于 2022-6-3 22:35
点赞 关注
 

回复
举报

6861

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

 UART的应用是基础应用,测评正常

此帖出自GD32 MCU论坛
 
 
 

回复

7096

帖子

11

TA的资源

版主

板凳
 
很好的教程,谢谢分享。
此帖出自GD32 MCU论坛

点评

感谢支持!!!  详情 回复 发表于 2022-5-31 16:53
 
 
 

回复

121

帖子

0

TA的资源

一粒金砂(高级)

4
 

谢谢楼主分享,学习到了,希望有机会多交流这些。

此帖出自GD32 MCU论坛
 
 
 

回复

1547

帖子

1

TA的资源

五彩晶圆(初级)

5
 
芯片老兵 发表于 2022-5-31 13:52 谢谢楼主分享,学习到了,希望有机会多交流这些。

此帖出自GD32 MCU论坛
 
 
 

回复

1547

帖子

1

TA的资源

五彩晶圆(初级)

6
 
lugl4313820 发表于 2022-5-30 08:19 很好的教程,谢谢分享。

感谢支持!!!

此帖出自GD32 MCU论坛
 
 
 

回复

121

帖子

0

TA的资源

一粒金砂(高级)

7
 

谢谢分享,非常专业。

此帖出自GD32 MCU论坛
 
 
 

回复

121

帖子

0

TA的资源

一粒金砂(高级)

8
 

谢谢分享,非常专业,希望有机会学习。

此帖出自GD32 MCU论坛
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

9
 

感谢版主大大的分享!共同学习共同进步,加油!加油!

此帖出自GD32 MCU论坛
 
 
 

回复

1547

帖子

1

TA的资源

五彩晶圆(初级)

10
 
ZanbaTea 发表于 2022-6-3 22:35 感谢版主大大的分享!共同学习共同进步,加油!加油!

此帖出自GD32 MCU论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表