首页 > 其他分享 >测试stm32串口发送数据在不同条件下的效率

测试stm32串口发送数据在不同条件下的效率

时间:2024-11-23 12:11:30浏览次数:5  
标签:DMA va uart 串口 bsp stm32 num arg 发送数据

一、测试不同波特率

测试代码:

    while(1)
    {
				LED1_ON();
				bsp_uart_Printf("这是一个测试程序%d\r\n", num);
				LED1_OFF();
				bsp_uart_Printf("这是一个测试程序%d\r\n", num);
				num ++;
    }

void bsp_uart_Printf(char *format, ...)
{
	va_list arg;
	va_start(arg, format);
	vsprintf(String, format, arg);
	va_end(arg);
	bsp_uart_SendString(String);
}

分别测试波特率为9600,115200、256000下的效率:

1. 9600:

逻辑分析仪抓到的数据如下:

2. 115200

逻辑分析仪抓到的数据如下:

3. 256000

逻辑分析仪抓到的数据如下:

二、在使用DMA的条件测试上述波特率

    while(1)
    {
        LED1_ON();
        bsp_uart_Printf_DMA("这是一个测试程序%d\r\n", num);
        LED1_OFF();
        bsp_uart_Printf_DMA("这是一个测试程序%d\r\n", num);
        num ++;
    }

void bsp_uart_Printf_DMA(char *format, ...)
{
    while(!u8UartDmaFlag);
        u8UartDmaFlag = 0;
        DMA_ClearFlag(DMA1_FLAG_TC4);						//清除工作完成标志位
        va_list arg;
        va_start(arg, format);
        vsprintf(String, format, arg);
        va_end(arg);
        DMA_SetCurrDataCounter(DMA1_Channel4, strlen(String));	//写入传输计数器,指定将要转运的次数
        DMA_Cmd(DMA1_Channel4, ENABLE);						//DMA使能,开始工作
}
void DMA1_Channel4_IRQHandler(void)
{
    u8UartDmaFlag = 1;
    DMA_ClearITPendingBit(DMA1_IT_TC4);
    DMA_Cmd(DMA1_Channel4, DISABLE);					//DMA失能,在写入传输计数器之前,需要DMA暂停工作
}
1. 9600

逻辑分析仪抓到的数据如下:

2. 115200

逻辑分析仪抓到的数据如下:

2. 256000

逻辑分析仪抓到的数据如下:

标签:DMA,va,uart,串口,bsp,stm32,num,arg,发送数据
From: https://www.cnblogs.com/chaoj/p/18564299

相关文章

  • CLion中使用add_subdirectory()模块化管理Stm32项目
    背景文章目录背景配置参考源码在Clion中使用STM32的时候,通常把自己开发的内容写在User目录中,然而需要将User目录下的源文件和头文件都添加到生成的CMakeLits.txt中。对于不同风格的库,直接在生成的CMakeLists.txt中添加资源会显得有些乱,可以使用cmake的**子目录(s......
  • STM32CubeMX下载芯片固件库失败
    1.错误截图使用STM32CubeMX下载STM32H7R固件失败如下所示:Forunavailablefiles,youcandownloadthemmanuallywiththe"FromLocalbutton"实际图片如下所示出现这个问题的时候,STM32CubeMX的软件重新卸载和安装过,但是均无效。网络也更换过,也无效,所以只有通过错误的......
  • STM32第15章 RCC-使用HSE/HSI配置时钟
    时间:2024.10.21-10.23参考资料:《零死角玩转STM32》“RCC-使用HSE/HIS配置时钟”章节TIPS:从前面的历程中我们知道,程序在启动的时候会执行汇编文件,汇编文件里会调用System_Init(固件库编程的函数),它里面会把时钟初始化成72M,因此前面我们在用固件库写程序的时候,有关时钟这一部......
  • C# 串口通信教程
    串口通信(SerialCommunication)是一种用于设备之间数据传输的常见方法,通常用于与外部硬件设备(如传感器、机器人、微控制器)进行通信。在C#中,System.IO.Ports 命名空间提供了与串口设备交互的功能,可以轻松实现串口通信。本教程将引导你如何在C#中实现串口通信,并展示一些常......
  • HL7协议简介及其在STM32上的解析实现
            近期完成一个医疗相关的项目,其中包括了体征监测设备,该设备使用的通信协议便是HL7V2.4协议,在医疗信息化领域,HL7(HealthLevelSeven)协议扮演着至关重要的角色。它是一种国际标准,用于定义医疗机构间以及医疗设备与信息系统之间的数据交换格式和通信协议。HL7标......
  • 红外对射传感器计次(江科大stm32学习笔记)
    本篇文章主要完成红外对射传感器计次的案例,为江科大stm32学习后的笔记记录。硬件方面如图所示为本次使用的红外对射传感器,根据相关说明书可知:模块槽中无遮挡时,接收管导通,模块DO输出低电平,遮挡时,DO输出高电平;且有输出状态指示灯,输出高电平灯灭,输出低电平灯亮。如图所示,①......
  • 解决一下、在学习江协科技stm32f103开发板操作寄存器无法点亮小灯,但是可以正常熄灭遇
    目录 本人问题:目前搜集网上有关信息有两种解决方案: 本人问题:问题:学习江协科技用操作寄存器的方式进行点亮小灯,代码正确,但是点亮小灯无法点亮,需要重新拔下来下载器再插入电脑USB口才可以点亮。但是熄灭小灯可以正常实现。本人代码:点亮:#include"stm32f10x.h"......
  • STM32 ADC实例解析(1)-HAL+DMA方式
    文章目录一、STM32ADC与DMA的结合使用初始化ADC:配置DMA:启动DMA传输:中断处理(可选):二、示例代码初始化GPIO设置中断设置三、应用优势高效性:减轻CPU负担:灵活性:易用性:随着开发项目的累计,将ADC与DMA结合使用,可以实现高效的数据采集和处理。一、STM32ADC与DMA的结合......
  • 基于STM32实现硬件SPI与W25Q128通讯步骤及程序
    为了大家更加直接了当的获取信息,我直接上干货一、硬件原理图:W25Q128模块图由上图可以看出,要和W25Q128通讯需要采用单片机上的SPI2W25Q128引脚连线图由上图看出:CS(片选)--------------PB12SCK--------------PB13MISO--------------PB14MOSI--------------PB15一、标......
  • 无线串口模块—配置软件以及串口助手的使用
    1、适用型号本文适用于无线串口模块调试。文中的软件界面截图,可能会由于软件系列、软件版本不同而略有区别。2、使用参数设置软件RF_Setting使用方法(以E32-433TBL-01型号lora模块开发测试套件说明)说明:E32-433TBL-01是贴片串口模块结合USB转TTL串口底板形成的无线模块开发成套测试产......