2017-05-25 60 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

相關問題