GD32串口接收发送数据总结

在GD32的嵌入式开发中,解决串口数据接收问题至关重要。文章详细介绍了如何通过调用usart_flag_get函数来确保RBNE标志正确设置,从而实现数据的稳定接收。在接收ADC通道的值时,这一方法显得尤为关键。
摘要由CSDN通过智能技术生成

在使用GD32串口接收数据的过程中,遇到了数据无法接收的问题,在导师的帮助下,需要调用usart_flag_get函数来使RBNE置1,RBNE:读数据时缓冲区非空,当数据缓存区接收到来自移位寄存器的数据时,该位置1. 0:读数据缓存区为空, 1:读数据缓存区不为空。主要代码如下:

while(1)  {		 
			  delay_1ms(400);
		      gd_eval_led_on(LED3);
		      delay_1ms(400);
	      	  gd_eval_led_off(LED3);
			  for ( i =0;i<16;i++)  {
			    vref_value[i]=adc_value[i]*3.3/4096;
		}
		   if(usart_flag_get(USART0,USART_FLAG_RBNE)==1) {  
			    if(usart_data_receive(USART0)=='0') {
			    delay_1ms(400);
                gd_eval_led_on(LED2);		
            	printf("通道0的值为%5.3f\r\n",vref_value[0]);					
		}

使用GD32串口接收ADC通道的值代码如下:


/*GD32通过串口接收ADC通道的值,并打印出  */

/*

    \file  main.c
    \brief USART printf demo
*/

/*
    Copyright (C) 2017 GigaDevice

    2017-06-23, V1.0.0, demo for GD32F30x
*/

#include "gd32f30x.h"
#include "gd32f303c_eval.h"
#include "systick.h"
#include <stdio.h>
#include "gd32f30x_it.h"

uint16_t i;
float adc_value[16];
float vref_value[16];
uint16_t j;
void led_init(void);
void led_flash(int times);
void rcu_config(void);
void gpio_config(void);
void adc_config();
uint16_t adc_channel_sample(uint8_t channel);

/*!
    \brief      main function
    \param[in]  none
    \param[out] none
    \retval     none
*/

int main(void)
{
    /* initialize the LEDs */
    led_init();
   
    /* configure systick */
    systick_config();       //系统滴答定时器配置 
    
    /* flash the LEDs for 1 time */
    led_flash(1);
    
    /* configure EVAL_COM1 */
    gd_eval_com_init(EVAL_COM1); 

   rcu_config();
	 
	  gpio_config();
	
	  adc_config();
    /* configure WAKEUP key */
    gd_eval_key_init(KEY_WAKEUP, KEY_MODE_GPIO);
    
    /* output a message on hyperterminal using printf function */
    printf("
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值