stm32使用HAL库串口重定向问题
HAL库版本:
使用这个版本库的时候,加入了如下代码,实现串口重定向:
1 int fputc(int ch,FILE *f) 2 { 3 HAL_UART_Transmit(&huart1, (uint8_t*)&ch, 1, 1000); 4 return ch; 5 } 6 7 8 /* 串口重定向 */ 9 int fgetc(FILE *f) { 10 uint8_t ch = 0; 11 HAL_UART_Receive(&huart1,&ch,1,1000); 12 return ch; 13 }
没有作用,发现在keil下,必须勾选MicroLib,不然不行。
Use MicroLIB:microlib 是缺省 C 库的备选库。 它旨在与需要装入到极少量内存中的深层嵌入式应用程序配合使用。 这些应用程序不在操作系统中运行
以下代码不需要配合microlib使用:
/*串口重定向*/
typedef struct __FILE FILE;
struct __FILE
{
int handle;
};
FILE __stdout;
int fputc(int ch, FILE *f)
{
//方法1
//while((USART2->SR&0X40)==0); //这里使用的是串口1,如用其他串口请自行修改
//USART2->DR = (uint8_t) ch;
//方法2
HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0xffff);
return ch;
}