T_Transmit(&huart1, (uint8_t *)&ch, 1, HAL_MAX_DELAY); return ch;}
按照你提供的代码,我发现有个地方写错了,GETCHAR_PROTOTYPE函数中的HAL_UAR T_Transmit()应该是HAL_UART_Receive(),而且函数中的参数也需要修改一下,应该是(uint8_t *)&ch,不然会有警告提示,你可以尝试一下以下修改后的代码:
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#define GETCHAR_PROTOTYPE int __io_getchar(FILE *f)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#define GETCHAR_PROTOTYPE int fgetc(FILE *f)
#endif /* __GNUC__ */
PUTCHAR_PROTOTYPE
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, HAL_MAX_DELAY);
return ch;
}
GETCHAR_PROTOTYPE
{
uint8_t ch = 0;
HAL_UART_Receive(&huart1, (uint8_t *)&ch, 1, HAL_MAX_DELAY);
return ch;
}
这样应该就可以正常使用getchar和scanf函数了。
T_Transmit(&huart1, (uint8_t *)&ch, 1, HAL_MAX_DELAY); return ch;}
按照你提供的代码,我发现有个地方写错了,GETCHAR_PROTOTYPE函数中的HAL_UAR T_Transmit()应该是HAL_UART_Receive(),而且函数中的参数也需要修改一下,应该是(uint8_t *)&ch,不然会有警告提示,你可以尝试一下以下修改后的代码:
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#define GETCHAR_PROTOTYPE int __io_getchar(FILE *f)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#define GETCHAR_PROTOTYPE int fgetc(FILE *f)
#endif /* __GNUC__ */
PUTCHAR_PROTOTYPE
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, HAL_MAX_DELAY);
return ch;
}
GETCHAR_PROTOTYPE
{
uint8_t ch = 0;
HAL_UART_Receive(&huart1, (uint8_t *)&ch, 1, HAL_MAX_DELAY);
return ch;
}
这样应该就可以正常使用getchar和scanf函数了。
举报