Keil环境
在Keil环境中使用printf,首先需要打开Use MicroLib,这个库是keil专门为嵌入式设备定制的,比C语言自带的库如stdio、string等占用空间更小,效率更高。
首先要点击Keil的魔术棒,如下图
把Use MicroLib打上勾,如下图
还要包含头文件#include <stdio.h>
,在Keil中串口重定向的如下
/**
* @brief 重定向c库函数printf到USARTx
* @param ch
* @param f
* @return
*/
int fputc(int ch, FILE *f)
{
/* 发送一个字节数据到调试串口 */
USART_TxData(DEBUG_USARTX, (uint8_t)ch);
/* 等待串口数据发送完毕 */
while (USART_ReadStatusFlag(DEBUG_USARTX, USART_FLAG_TXBE) == RESET)
;
return (ch);
}
/**
* @brief 重定向c库函数getchar,scanf到USARTx
* @param f
* @return
*/
int fgetc(FILE *f)
{
/* 等待串口输入数据 */
while (USART_ReadStatusFlag(DEBUG_USARTX, USART_FLAG_RXBNE) == RESET)
;
return (int)USART_RxData(DEBUG_USARTX);
}
注意:GCC、IAR环境的重定向和Keil不一样,不能使用上述代码
标签:ch,return,USART,Keil,串口,USARTX,printf,APM32 From: https://blog.csdn.net/showgu/article/details/143720318