ActiveMQ Java Out Of Memory package 图像处理 MongoDB gps express networking automation vue例子 后台管理模板下载 svn默认安装路径 hadoop创建文件夹 coreldraw入门学习 solidworks图库 linux查看防火墙 vue与html5 kubernetes安装 安装python 数据库学习 javaif语句 java读取文件内容 java操作数据库 linux安装教程 linux磁盘管理 php开发实例 java小程序 Ext2Fsd pr放大画面 mac版matlab babelrc 头条视频解析 梦想世界答题器 搜狐影音播放器 cad特性不显示 jquery添加样式 excel乘积 devenv python游戏编程 楷体gbk
当前位置: 首页 > 学习教程  > 编程语言

GD32E230开发笔记-GD32E230串口输出打印

2021/2/13 17:21:23 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

GD32E230开发笔记-GD32E230串口输出打印1.硬件设计2.软件设计USART函数编写主函数3.调试效果4.程序源码1.硬件设计 GD32E230C8T6最大可支持2路USART接口,分别如下: USART0:PA9,PA10,PA11,PA12;…

GD32E230开发笔记-GD32E230串口输出打印

  • 1.硬件设计
  • 2.软件设计
    • USART函数编写
    • 主函数
  • 3.调试效果
  • 4.程序源码

1.硬件设计

GD32E230C8T6最大可支持2路USART接口,分别如下:
USART0:PA9,PA10,PA11,PA12;
在这里插入图片描述
USART1:PA0,PA1,PA2,PA3;
在这里插入图片描述
在开发调试过程中,一般不用流控,因此在实际调试中并没调试。

2.软件设计

USART函数编写


void USART0_Init(void)
{    
    rcu_periph_clock_enable(RCU_GPIOA);				//使能GPIOA时钟
    rcu_periph_clock_enable(RCU_USART0);			//使能USART0时钟
    
		//Usart0 TX GPIOA_9
    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_af_set(GPIOA, GPIO_AF_1, GPIO_PIN_9);	
		//Usart0 RX GPIOA_10
    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);
	gpio_af_set(GPIOA, GPIO_AF_1, GPIO_PIN_10);	
	
    usart_deinit(USART0);																			//初始化USART0
    usart_baudrate_set(USART0, 115200U);											//波特率115200
    usart_word_length_set(USART0, USART_WL_8BIT);							//8个数据位
    usart_stop_bit_set(USART0, USART_STB_1BIT);								//1个停止位
    usart_parity_config(USART0, USART_PM_NONE);								//无奇偶校验
    usart_hardware_flow_rts_config(USART0, USART_RTS_DISABLE);//RTS流控关闭
    usart_hardware_flow_cts_config(USART0, USART_CTS_DISABLE);//CTS流控关闭
	usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);			//使能USART0发送
    usart_receive_config(USART0, USART_RECEIVE_ENABLE);				//使能USART0接收	
		
	usart_interrupt_enable(USART0,USART_INT_RBNE);						//使能中断
	nvic_irq_enable(USART0_IRQn,2U);													//使能中断优先级
	usart_enable(USART0);																			//使能USART0
}
 
void USART0_Send_Byte(uint8_t Send_Byte)
{
    usart_data_transmit(USART0, Send_Byte);
    while ( usart_flag_get(USART0, USART_FLAG_TBE)== RESET) ;
}

void USART0_Send_Str(uint8_t *Str)
{
    while((*Str)!='\0')
    {
      USART0_Send_Byte(*Str);
      Str++;
    }
}

void USART0_IRQHandler(void)
{
	 uint8_t i;
    if (RESET != usart_interrupt_flag_get(USART0, USART_INT_FLAG_RBNE))   //接收中断
    {
        USART0_RECEIVE_Buf[i++] = (uint8_t)usart_data_receive(USART0);
    }
		else if(RESET != usart_interrupt_flag_get(USART0, USART_INT_FLAG_TBE))//发送中断
    {
				usart_interrupt_flag_clear(USART0,USART_INT_FLAG_IDLE);    
    }
}

void USART1_Init(void)
{    
    rcu_periph_clock_enable(RCU_GPIOA);				//使能GPIOA时钟
    rcu_periph_clock_enable(RCU_USART1);			//使能USART0时钟
    //USART1 TX GPIOA_2 
    gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_2);
    gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_2);
	gpio_af_set(GPIOA, GPIO_AF_1, GPIO_PIN_2);	
		//USART1 RX GPIOA_3 
    gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_3);
    gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_3);
	gpio_af_set(GPIOA, GPIO_AF_1, GPIO_PIN_3);	
	
    usart_deinit(USART1);																			//USART1
    usart_baudrate_set(USART1, 115200U);											//波特率115200
    usart_word_length_set(USART1, USART_WL_8BIT);							//8位数据位
    usart_stop_bit_set(USART1, USART_STB_1BIT);								//1位停止位
    usart_parity_config(USART1, USART_PM_NONE);								//无奇偶校验位
    usart_hardware_flow_rts_config(USART1, USART_RTS_DISABLE);//RTS流控关闭
    usart_hardware_flow_cts_config(USART1, USART_CTS_DISABLE);//CTS流控关闭
	usart_transmit_config(USART1, USART_TRANSMIT_ENABLE);			//使能USART1发送
    usart_receive_config(USART1, USART_RECEIVE_ENABLE);				//使能USART1接收		
 
	usart_interrupt_enable(USART1,USART_INT_RBNE);						//使能USART1中断
	nvic_irq_enable(USART1_IRQn,2U);													//使能USART1中断优先级
	usart_enable(USART1);																			//使能USART0
}
 
void USART1_Send_Byte(uint8_t Send_Byte)
{
    usart_data_transmit(USART1, Send_Byte);
    while ( usart_flag_get(USART1, USART_FLAG_TBE)== RESET) ;
}

void USART1_Send_Str(uint8_t *Str)
{
    while((*Str)!='\0')
    {
      USART1_Send_Byte(*Str);
      Str++;
    }
}

void USART1_IRQHandler(void)
{
	  uint8_t i;
		if (RESET != usart_interrupt_flag_get(USART1, USART_INT_FLAG_RBNE))		 	//发送中断
    {
        USART0_RECEIVE_Buf[i++] = (uint8_t)usart_data_receive(USART1);
    }
		else if(RESET != usart_interrupt_flag_get(USART1, USART_INT_FLAG_TBE))  //接收中断
    {
        usart_interrupt_flag_clear(USART1,USART_INT_FLAG_IDLE);  
    }
}

主函数

int main(void)
{
    systick_config();   
	LED_Init();
	USART0_Init();
	USART1_Init();  
	
    while(1){
        /* turn on LED */
		USART0_Send_Str((uint8_t*)"USART0:Turn on LED.\r\n");
		USART1_Send_Str((uint8_t*)"USART1:Turn on LED.\r\n");
        gpio_bit_set(GPIOA,GPIO_PIN_7);
				gpio_bit_set(GPIOA,GPIO_PIN_8);       
        Delay_ms(1000);			
        /* turn off LED */
		USART0_Send_Str((uint8_t*)"USART0:Turn off LED.\r\n");
		USART1_Send_Str((uint8_t*)"USART1:Turn off LED.\r\n");
        gpio_bit_reset(GPIOA,GPIO_PIN_7);
        gpio_bit_reset(GPIOA,GPIO_PIN_8);				
        Delay_ms(1000);	
    }
}

3.调试效果

在这里插入图片描述

4.程序源码

GD32E230C8T6双串口输出源代码


本文链接: http://www.dtmao.cc/news_show_700125.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?