358|0

1118

帖子

0

资源

纯净的硅(高级)

【GD32L233C-START测评】串行通讯功能测试与程序分析 [复制链接]

由资料可知,GD32L233C开发板具有4个通讯串口,分别是USART0、USART1 、USART3 及UART4。

此外,它配备了相应的串口收发例程以供学习和使用,其工程目录为“04_USART_HyperTerminal_Interrupt”。

那该程序具有怎样的功能呢?

在测试前,首先要做好相应的准备工作,即使用CN100端口来供电,用CN1端口来收发数据,其接口电路如图1所示。

image-20220114210601-1.png   image-20220114210601-2.png  

image-20220114210601-3.png  

图1 所用端口

 

在编译下载程序后,需按图2所示来设置串口通信参数,在复位后会见到4个LED灯闪烁一次,随后即可开发板所发出的00~FF的2556个数据。

在通常情况下,似乎功能测试至此就结束了,其实这只完成了一半的测试。

image-20220114210601-4.png  

image-20220114210601-5.png  

图2 串口参数设置及数据接收

随后的测试,则要求我们以HEX码的方式向开发板发送00~FF来测试开发板的数据接收功能,见图3所示。

执行到这里,我们会发现开发板上4个LED灯在以流水灯的模式在不停的流动,至此才完成了全部的测试。

image-20220114210601-6.png  

图3 发送数据

有了前面的测试结果,我们再来观察程序就明了了相对,其主程序如下:

int main(void)
{
    led_init();                    //  LED灯初始化
    systick_config();
    nvic_irq_enable(USART0_IRQn, 0);//  启用中断处理
    led_flash(1);                  //  LED灯闪烁一次
    gd_eval_com_init(EVAL_COM);   //  串口USART0初始化
    usart_interrupt_enable(EVAL_COM, USART_INT_RBNE);  // 使能中断接收
    usart_interrupt_enable(EVAL_COM, USART_INT_TBE);    // 使能中断发送
    while(tx_counter < nbr_data_to_send) {
    }                            //  等待完成数据发送
    while(rx_counter < nbr_data_to_read) {
    }                            //  等待完成数据接收
    transfer_status = memory_compare(tx_buffer, rx_buffer, BUFFER_SIZE); 
                                 //  进行数据收发一致性判别
    while(1) {
        if(SUCCESS == transfer_status) {
                                 //  数据一致,进入LED灯轮流闪烁模式。
            gd_eval_led_on(LED1);
            delay_1ms(200);
            gd_eval_led_on(LED2);
            delay_1ms(200);
            gd_eval_led_on(LED3);
            delay_1ms(200);
            gd_eval_led_on(LED4);
            delay_1ms(200);
            gd_eval_led_off(LED1);
            gd_eval_led_off(LED2);
            gd_eval_led_off(LED3);
            gd_eval_led_off(LED4);
            delay_1ms(200);
        } else {
            led_flash(1);   //  LED灯一起闪烁
        }
    }
}

 

别看这个例程十分简单,但的却是十分的有用,其主要体现在:一是解决了串口的数据收发问题,二是得到了数据收发一致性的判别功能,三是解决字节数据的发送问题,而不是用PRINT语句只能发送字符类的数据,这就为串口设备的控制打开了方便之门。

此帖出自GD32 MCU论坛

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

查找数据手册?

EEWorld Datasheet 技术支持

最新文章 更多>>
    关闭
    站长推荐上一条 1/5 下一条

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

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

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

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