2017-05-25 91 views
0

我想在使用IAR编译器的STM32F401RE_NUCLEO中使用scanf()函数。scanf()缺少第一个字母

这是我的重载fgetc函数。

int fgetc(FILE *f) { 
    char ch; 
    while (__HAL_UART_GET_FLAG(&UartHandle, UART_FLAG_RXNE) == RESET); 
    HAL_UART_Receive(&UartHandle, (uint8_t*)&ch, 1, 0xFFFF); 
    return ch; 
} 

而且我在下面的主函数中使用scanf。

int n; 
printf("[DBG] Input: "); 
scanf("%d", &n); 
printf("[DBG] Output: %d\n", n); 

如果我从终端键入“123”,然后打印“23”。

%d,%u,%f是相同的。

但是,只有%c工作正常。

我该如何解决这个问题?

回答

0

也许你有像mikrocontroller.net论坛中的家伙一样的问题。

他需要实现的功能__write__read而不是龟etc的fputc

原型:

size_t __write(int Handle, const unsigned char * buf, size_t count); 
size_t __read(int Handle, unsigned char * buf, size_t count); 

可能也很有趣你:How to override and redirect library modules