一、开发环境
keil mdk版本:V5.26.2.0
硬件环境:GD32E231C-START
二、调试内容
调通GD32E231的USART0
三、软件
USART0的管脚开发板上已经通过插针引出来了,使用的是PA9(发送)和PA10(接收),软件主要分为三个部分:
1.PA9和PA10的gpio初始化
2.USART0初始化
3.发送和接收函数
可以直接在led的例程上做修改。详细如下:
1.gpio初始化,全部调用库函数就可以实现
- rcu_periph_clock_enable(RCU_GPIOA);//打开porta端口时钟
- rcu_periph_clock_enable(RCU_USART0);//打开USART0时钟
-
- gpio_af_set(GPIOA,GPIO_AF_1,GPIO_PIN_9|GPIO_PIN_10);//配置PA9.10为usart0功能
-
- 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);
2.USART0初始化(19200,8N1)
- usart_word_length_set(USART0, USART_WL_8BIT);//设置长度为8bit
- usart_stop_bit_set(USART0, USART_STB_1BIT);//1bit停止位
- usart_parity_config(USART0, USART_PM_NONE);
- usart_baudrate_set(USART0, 19200U);
- usart_receive_config(USART0, USART_RECEIVE_ENABLE);
- usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);
-
- usart_enable(USART0);
-
- /* enable USART RBNE interrupt */
- usart_interrupt_enable(USART0, USART_INT_RBNE);
- nvic_irq_enable(USART0_IRQn, 0);
3.发送函数
- void send_str(unsigned char *str)
- {
- while(*str!=0)
- {
- usart_data_transmit(USART0,*str);//库函数,发送字节
- str++;
- delay_1ms(1);
- }
- }
4.主程序
- #include "gd32e23x.h"
- #include "systick.h"
- #include "usartx.h"
- #include "e231_gpio.h"
- //#include "system_gd32e23x.h"
- int main(void)
- {
-
- SystemInit();//配置系统时钟为72Mhz,选择外部8Mhz晶振
- systick_config();//配置系统滴答
- init_gpio();//gpio初始化
- usart_init();//USART0初始化//19200
- send_str((unsigned char *)"Hello GD32E231\r\n");
-
- while(1)
- {
- /* turn on LED1 */
- gpio_bit_set(GPIOA,GPIO_PIN_7);
- delay_1ms(1000);
- /* turn off LED1 */
- gpio_bit_reset(GPIOA,GPIO_PIN_7);
- delay_1ms(1000);
- }
- }
完整工程文件如下:
下节内容为定时器...