3519|9

1510

帖子

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
点赞 关注
 

回复
举报

6802

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

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

此帖出自GD32 MCU论坛
 
 
 

回复

6960

帖子

11

TA的资源

版主

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

点评

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

回复

121

帖子

0

TA的资源

一粒金砂(高级)

4
 

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

此帖出自GD32 MCU论坛
 
 
 

回复

1510

帖子

1

TA的资源

五彩晶圆(初级)

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

此帖出自GD32 MCU论坛
 
 
 

回复

1510

帖子

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论坛
 
 
 

回复

1510

帖子

1

TA的资源

五彩晶圆(初级)

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

此帖出自GD32 MCU论坛
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
【无线收发模块】资料汇总(欢迎上传++)

小爆一下我的无线收发模块:TI 的MSP430+CC2500 Zigbee开发套件、Digi公司的XBee-pro模块、nrf2401。现在都把资料上传。 nRF2401 ...

ez430-RF2500学习

上周就收到汤汤姐寄来的EZ430-RF2500的板子了,包装很细腻,打开后,一个MSP430的仿真器,两个同样的小板,一个带电池的小板(很 ...

Show入门时的DIY小东西集

在学校读书时,做了好多小东西,这些东西都是用万用板焊接的,这么对年了,一直带在身边,现在Show出来,同时把代码图纸都完全开 ...

大家一起DIY:家庭物联网终端

DIY项目:《基于富士通Cortex开发板的家庭物联网终端DIY》本活动由EEWORLD组织,网友@youyou_hu111 ,@cat3902982 ,@anananjjj ...

沁恒CH579M-R1开发板免费测评活动即将推出,快来说说你对这块板子的看法吧~

沁恒CH579M-R1开发板 本评估板应用于 CH579 芯片的测试开发,配套上位机 ISP 工具,支持 USB 和串口 2 种 ISP 下载方式和 S ...

TP4056电源输入端那个电阻的作用是什么

本帖最后由 sky999 于 2022-8-20 03:27 编辑 这个电阻的作用是不是消耗一部分热量呢? 看手册的说明,还有右边圈出来这个 ...

proteus自动布线出现failed to load layout?

proteus自动布线出现failed to load layout?如何处理?

全志R128基础组件开发指南——SPI LCD 显示驱动

# SPI LCD 显示驱动 ## 简介 R128 平台提供了 SPI DBI 的 SPI TFT 接口ACCC,具有如下特点: - Supports DBI Type C 3 ...

分享嵌入式计算机革命

回到2008年,Intel®推出了其Atom®系列处理器的第一代——Intel® Atom®处理器Z500系列—— ...

【泰坦触觉 TITAN Core开发套件】咋没有PDF原理图

泰坦触觉TITAN Core 开发套件所用的控制板是一款专用的板子,因此在控制触觉马达时无需自行配置驱动装置, 哪这款控制板的电 ...

关闭
站长推荐上一条 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
快速回复 返回顶部 返回列表