新随笔  :: 联系 :: 订阅 订阅  :: 管理

STM32系统开发--基于LL库的多串口Printf使用

Posted on 2024-02-12 20:49  日暮途远7  阅读(347)  评论(0编辑  收藏  举报

MDK:Keil v5.38/STM32CubeMX

MCU:STM32G431CBUx

外设:串口USART1、2

使用多串口Printf,基于C语言中的函数可变参数,首先要包含头文件"stdarg.h"。

基于LL库,编写多串口打印函数:

/************************************************
函数名称 :USART_Printf
功    能 :多串口Printf函数
参    数 :
返 回 值 :
*************************************************/
void USART_Printf(USART_TypeDef *USARTx,char* fmt, ...)
{
    uint16_t i=0;
    char usart_sendbuff[256];
    memset(usart_sendbuff,0,256);
    
    va_list ap;
    va_start(ap,fmt);
    vsprintf(usart_sendbuff,fmt,ap);
    va_end(ap);
    
    while(usart_sendbuff[i])
    {
        LL_USART_TransmitData8(USARTx,usart_sendbuff[i++]);
    while(!LL_USART_IsActiveFlag_TXE(USARTx));//需要等待发送完成
    }

}    

编写测试函数:

USART_Printf(USART1,"Temperature:%6.4f\r\n",imu_measurements.Temperature);
USART_Printf(USART2,"Acc_X:%6.4f \r\n",imu_measurements.Uncomp_Acc_X);
        

实测现象