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

xinmeng_wit   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)
(下载次数: 21, 2019-5-26 16:42 上传)


下节内容为定时器...

回复评论 (2)

谢谢分享!
点赞  2019-5-27 08:22

谢谢分享!!!

点赞  2020-5-16 10:00
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复