社区导航

 

搜索
查看: 161|回复: 1

[经验分享] 【GD32E231 DIY大赛】1、USART0

[复制链接]

318

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2019-5-26 16:43 | 显示全部楼层 |阅读模式
一、开发环境
keil mdk版本:V5.26.2.0
硬件环境:GD32E231C-START

二、调试内容
调通GD32E231的USART0

三、软件
USART0的管脚开发板上已经通过插针引出来了,使用的是PA9(发送)和PA10(接收),软件主要分为三个部分:
1.PA9和PA10的gpio初始化
2.USART0初始化
3.发送和接收函数

可以直接在led的例程上做修改。详细如下:

1.gpio初始化,全部调用库函数就可以实现

  1.         rcu_periph_clock_enable(RCU_GPIOA);//打开porta端口时钟
  2.         rcu_periph_clock_enable(RCU_USART0);//打开USART0时钟
  3.        
  4.         gpio_af_set(GPIOA,GPIO_AF_1,GPIO_PIN_9|GPIO_PIN_10);//配置PA9.10为usart0功能
  5.        
  6.         gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_9);
  7.         gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_9);

  8.         gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_10);
  9.         gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_10);
复制代码



2.USART0初始化(19200,8N1)

  1.         usart_word_length_set(USART0, USART_WL_8BIT);//设置长度为8bit
  2.         usart_stop_bit_set(USART0, USART_STB_1BIT);//1bit停止位
  3.         usart_parity_config(USART0, USART_PM_NONE);
  4.         usart_baudrate_set(USART0, 19200U);
  5.         usart_receive_config(USART0, USART_RECEIVE_ENABLE);
  6.         usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);
  7.        
  8.         usart_enable(USART0);
  9.        
  10.             /* enable USART RBNE interrupt */
  11.         usart_interrupt_enable(USART0, USART_INT_RBNE);
  12.         nvic_irq_enable(USART0_IRQn, 0);
复制代码



3.发送函数

  1. void send_str(unsigned char *str)
  2. {
  3.         while(*str!=0)
  4.         {
  5.                 usart_data_transmit(USART0,*str);//库函数,发送字节
  6.                 str++;
  7.                 delay_1ms(1);
  8.         }
  9. }
复制代码



4.主程序

  1. #include "gd32e23x.h"
  2. #include "systick.h"
  3. #include "usartx.h"
  4. #include "e231_gpio.h"
  5. //#include "system_gd32e23x.h"

  6. int main(void)
  7. {
  8.             
  9.         SystemInit();//配置系统时钟为72Mhz,选择外部8Mhz晶振
  10.         systick_config();//配置系统滴答
  11.         init_gpio();//gpio初始化
  12.         usart_init();//USART0初始化//19200
  13.         send_str((unsigned char *)"Hello GD32E231\r\n");
  14.        
  15.         while(1)
  16.         {
  17.                         /* turn on LED1 */
  18.                         gpio_bit_set(GPIOA,GPIO_PIN_7);
  19.                         delay_1ms(1000);
  20.                         /* turn off LED1 */
  21.                         gpio_bit_reset(GPIOA,GPIO_PIN_7);
  22.                         delay_1ms(1000);
  23.         }
  24. }
复制代码



USART0.PNG

完整工程文件如下: gd32_speed.rar (561.04 KB, 下载次数: 10)


回复

使用道具 举报

175

TA的帖子

0

TA的资源

宇宙尘埃

发表于 2019-5-27 08:22 | 显示全部楼层
谢谢分享!


回复

使用道具 举报

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

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-6-18 09:26 , Processed in 0.101607 second(s), 17 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表