fgets功能不起作用

时间:2016-09-13 10:31:53

标签: c printf microcontroller fgets scanf

当我编写以下代码时。 Putty打印文本但我不能在下面键入任何内容..

例如:

首先他做printf - >你是谁?

然后我做了一个fgets我通常最常输入的内容,这样做起作用。

最后他做了另一个printf他说的话;很高兴见到你...

 int main(void)
{       
  /* USER CODE END 1 */

  /* MCU Configuration----------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* Configure the system clock */
  SystemClock_Config();

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_I2C1_Init();
  MX_USART2_UART_Init();

  /* USER CODE BEGIN 2 */

  char name[10];
  printf("Who are you? \n");
  fgets(name,10,stdin);
  printf("Good to meet you, %s.\n",name);
  return(0);  
}
谁能帮助我吗? 谢谢 !

1 个答案:

答案 0 :(得分:0)

您已在源代码中覆盖了fputs的实现。因此,您的链接器不需要查找该函数的库实现。通过实现fputc,您已将stdio-output-path连接到UART发送器。

您需要定义相应的输入路径。这可以通过实现fgetc函数来完成。在那可以库函数fgets可以调用你的函数,轮询UART接收器。

嵌入式环境中stdio的默认实现依赖于供应商。它可以连接到

  • JTAG调试器
  • 微控制器特定的调试/控制台端口
  • 没有

因此,您有责任正确实现该连接。这可能比fputc实现更复杂,因为如果在呼叫时UART收到数据,则必须检查。