STM32通过UART向串行端口发送值

问题描述

我正在使用电位计来控制伺服电机。我想通过UART将伺服角度值发送到串行端口。首先,我遇到了不知名的角色。现在,它每次都会打印“ Servo:0”,但是我正在更改值。

uint32_t potadc;
uint32_t servopot;
char str[32];

int size_len = sprintf (str,"Servo : %lu\n",servopot,0xFFFF);


while {
servopot = potadc/6;

HAL_UART_Transmit (&huart2,(uint8_t *)str,size_len,HAL_MAX_DELAY);
          HAL_Delay(1000);
        
        }

解决方法

sprintf必须在循环内 ,否则在进入循环/之前将只执行一次。

int size_len;

while(1) {
    servopot = potadc/6;
    size_len = sprintf (str,"Servo : %u\n",servopot);
    HAL_UART_Transmit (&huart2,(uint8_t *)str,size_len,HAL_MAX_DELAY);
    HAL_Delay(1000);        
}
,

我移动了

int size_len = sprintf (str,"Servo : %lu\n",servopot,0xFFFF);

代码到循环,它起作用了。谢谢所有试图回答的人。