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;
}

 

 

posted @ 2023-08-31 09:53  njit-sam  阅读(236)  评论(0编辑  收藏  举报