stm32使用printf代码
时间: 2023-04-03 17:04:44 浏览: 95
STM32的printf输出程序.zip
可以使用以下代码实现stm32的printf功能:
#include "stdio.h"
#include "stdarg.h"
void USART_printf(USART_TypeDef* USARTx, uint8_t *Data,...)
{
const char *s;
int d;
char buf[16];
va_list ap;
va_start(ap, Data);
while (*Data != 0) {
if (*Data == 0x5c) {
switch (*++Data) {
case 'r':
USART_SendData(USARTx, 0x0d);
Data++;
break;
case 'n':
USART_SendData(USARTx, 0x0a);
Data++;
break;
default:
Data++;
break;
}
} else if (*Data == '%') {
switch (*++Data) {
case 's':
s = va_arg(ap, const char *);
for (; *s; s++) {
USART_SendData(USARTx, *s);
while (USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET);
}
Data++;
break;
case 'd':
d = va_arg(ap, int);
itoa(d, buf, 10);
for (s = buf; *s; s++) {
USART_SendData(USARTx, *s);
while (USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET);
}
Data++;
break;
default:
Data++;
break;
}
} else USART_SendData(USARTx, *Data++);
while (USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET);
}
}
其中,USARTx是指定的串口,Data是要发送的数据,可以使用%s和%d格式化字符串和数字。
阅读全文