GD32串口接收发送数据总结

在使用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("
  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值