// 将采样结果发送给USART2 char buffer[50]; sprintf(buffer, "ADC Value: %d, %d, %d\n", adc_val[0], adc_val[1], adc_val[2]); USART_SendData(USART2, buffer); while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);报错..\User\main.c(140): error: #268: declaration may not appear after executable statement in block char buffer[50]; ..\User\main.c(142): error: #167: argument of type "char *" is incompatible with parameter of type "uint16_t" USART_SendData(USART2, buffer);
时间: 2024-01-27 13:05:13 浏览: 95
串行通信及AD转换实验.rar_A/D转换_A/D转换实验_AD转换_motorola
5星 · 资源好评率100%
这段代码中出现了两个错误。第一个错误是声明不能放在可执行语句后面,需要将`char buffer[50];`这行代码放到函数的起始位置。第二个错误是`USART_SendData()`函数的第二个参数应该是`uint16_t`类型,而不是`char*`类型。需要使用`sprintf()`函数将字符串格式化为无符号整数后再传递给`USART_SendData()`函数。可以使用下面的代码来替换原来的代码:
```
uint16_t buffer[50];
sprintf((char*)buffer, "ADC Value: %d, %d, %d\n", adc_val[0], adc_val[1], adc_val[2]);
for(int i=0; i<strlen((char*)buffer); i++) {
USART_SendData(USART2, buffer[i]);
while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);
}
```
阅读全文