DARMSTM.DLL
pSTM32F103RB
printf重定位
- #include <stdio.h>
- 初始化串口
- 重写fputc 和 fgetc 函数
/****************************************************************************
* 名 称:int fputc(int ch, FILE *f)
* 功 能:printf函数的输出驱动函数
* 入口参数:无
* 出口参数:无
* 说 明:
* 调用方法:无
****************************************************************************/
int fputc(int ch, FILE *stream)
{
/* 堵塞判断串口是否发送完成 */
while((USART2->SR & UART_FLAG_TXE) == RESET);
/* 串口发送完成,将该字符发送 */
USART2->DR = (uint8_t) ch;
return ch;
}
/****************************************************************************
* 名 称: fgetc(FILE *f)
* 功 能: 键盘输入重定向函数
* 入口参数:无
* 出口参数:无
* 说 明:
* 调用方法:无
****************************************************************************/
int fgetc(FILE *f)
{
/* 堵塞判断串口是否接收完成 */
while((USART2->SR & UART_FLAG_RXNE) == RESET);
/* 串口接收完成,将该字符读出 */
return (USART2->DR);
}
-
勾选 Use MicroLIB
-
变量打印宏
#define PRINT_INT(i) \
printf("%8s():&%-5s = 0x%-8x, %-5s = %-5d = 0x%-4x = '%c'\n", __FUNCTION__, #i, &(i), #i, i, i, i);