问题描述
我正在使用电位计来控制伺服电机。我想通过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);
代码到循环,它起作用了。谢谢所有试图回答的人。