2527|4

1513

帖子

1

TA的资源

五彩晶圆(初级)

楼主
 

【GD32307E-START】+串行通讯功能测试 [复制链接]

  本帖最后由 jinglixixi 于 2020-11-9 22:20 编辑

在官网的例程提供了一个串口通信功能的例程,但比较奇葩的是其在硬件方面的设计,由于板上已丝印了GD-Link的提示,故在使用时不会产生歧异;在供电方面,也在切换开关作为标注“DC”和“Link”。然,其虚拟串口的使用就怪异了,居然竟不能使用虚拟串口端的USB来供电,也不能借用GD-Link来形成虚拟串口。其结果就是完成一个简单的串口通信测试却要同时使用2条USB线,见图1所示。

在不了解这些之前,是怎么也鼓捣不出虚拟串口的!

图1 串口通信测试连接

 

在鼓捣出虚拟串口后,测试就比较简单了。将程序编译下载后,即可见到图2所示的内容,即每按一下USER用户键,LED1就亮一下,与此同时通过串口也会输出一个“USART printf example”。

图2  串口输出内容

 

那么其程序是如何设计的呢?

实现要点亮LED1,就需要对其定义和初始化,其初始化函数为:

void led_init(void)
{
    gd_eval_led_init(LED1);
}

 

而使LED1闪烁的函数则如下:

void led_flash(int times)
{
    int i;
    for(i=0; i<times; i++)
    {
        /* delay 400 ms */
        delay_1ms(400);
        /* turn on LEDs */
        gd_eval_led_on(LED1);
        /* delay 400 ms */
        delay_1ms(400);
        /* turn off LEDs */
        gd_eval_led_off(LED1);
    }
}

 

也就是说,每隔400毫秒就切换一次状态。

对于串行通讯来讲,则涉及到收与发,在发送时所使用的是经重新定向的printf语句,而接收则是通过fputc函数,其内容如下:

int fputc(int ch, FILE *f)
{
    usart_data_transmit(EVAL_COM1, (uint8_t)ch);
    while(RESET == usart_flag_get(EVAL_COM1, USART_FLAG_TBE));
    return ch;
}

 

最后再看一下主程序,功能不多但程序却写的很臃肿,其内容如下:

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);
    /* configure TAMPER key */
    gd_eval_key_init(KEY_WAKEUP, KEY_MODE_GPIO);
    /* output a message on hyperterminal using printf function */
    printf("\r\n USART printf example: please press the User key \r\n");
    /* wait for completion of USART transmission */
    while(RESET == usart_flag_get(EVAL_COM1, USART_FLAG_TC)){
    }
    while(1)
    {
        /* check if the user key is pressed */
        if(RESET == gd_eval_key_state_get(KEY_WAKEUP))
        {
            delay_1ms(50);
            if(RESET == gd_eval_key_state_get(KEY_WAKEUP))
            {
                delay_1ms(50);
                if(RESET == gd_eval_key_state_get(KEY_WAKEUP))
                {
                    /* turn on LED1 */
                    gd_eval_led_on(LED1);
                    /* output a message on hyperterminal using printf function */
                    printf("\r\n USART printf example \r\n");
                    /* wait for completion of USART transmission */
                    while(RESET == usart_flag_get(EVAL_COM1, USART_FLAG_TC)){
                    }
                }
                else
                {
                    /* turn off LED1 */
                    gd_eval_led_off(LED1);
                }
            }
            else
            {
                /* turn off LED1 */
                gd_eval_led_off(LED1);
            }
        }
        else
        {
            /* turn off LED1 */
            gd_eval_led_off(LED1);
        }
    }
}

 

最新回复

这就很难受了,还得接两个数据线   详情 回复 发表于 2020-11-10 09:41
点赞 关注
 
 

回复
举报

7608

帖子

2

TA的资源

五彩晶圆(高级)

沙发
 

谢谢分享!

个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复

1513

帖子

1

TA的资源

五彩晶圆(初级)

板凳
 
 
 

回复

1942

帖子

3

TA的资源

版主

4
 

这就很难受了,还得接两个数据线

点评

是呀!此外,例程使用起来也较费劲,难怪前面的兄弟们遇难了。  详情 回复 发表于 2020-11-10 10:41
 
 
 

回复

1513

帖子

1

TA的资源

五彩晶圆(初级)

5
 
w494143467 发表于 2020-11-10 09:41 这就很难受了,还得接两个数据线

是呀!此外,例程使用起来也较费劲,难怪前面的兄弟们遇难了。

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表