USART中的getchar()函数功能不能实现

2019-07-14 16:11发布

STM32中是不是只要初始化了USART之后,然后再加上#ifdef __GNUC__/* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
   set to 'Yes') calls __io_putchar() */
#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
{
  /* Place your implementation of fputc here */
  /* e.g. write a character to the USART1 and Loop until the end of transmission */
  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);

  return ch;
}

GETCHAR_PROTOTYPE
{
  uint8_t ch = 0;
  HAL_UART_Receive(&huart1,&ch, 1, 0xffff);
  return ch;
}

就可以用getchar 和printf到串口助手上去了啊?目前我可以实现printf的功能,但是getchar的功能还是不能实现。不知道哪里有问题?有大神知道的吗,指点一二吧,在线等。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
hu_wfllllllllfl
1楼-- · 2019-07-15 11:56
 精彩回答 2  元偷偷看……
hu_wfllllllllfl
2楼-- · 2019-07-15 17:34
TOPCB 发表于 2018-11-8 15:02
HAL_UART_Receive(&husart_debug,&ch, 1, 0xffff);
这个用你之前能printf的husart,后面的0xFFFF改为1000

谢谢,已经解决了,正是你说的那样
tyewybvwe
3楼-- · 2019-07-15 22:42
学习了。其实关于printf和getchar你可以自己写一个,或者参考一下网上的例子做一个。这样就不用局限于系统提供的,并且想用什么借口print都可以,比如USB.
TOPCB
4楼-- · 2019-07-16 03:31
不客气,有问题发帖即可。
hu_wfllllllllfl
5楼-- · 2019-07-16 05:07
在这个平台学习STM32真的会事半功倍,里面有好多无私的大神。。。
wenxueshu
6楼-- · 2019-07-16 07:11
 精彩回答 2  元偷偷看……

一周热门 更多>