我一直致力于使用STM32F0 Discovery Board的项目。在这个项目中,我计划使用USART将数据发送到计算机。我知道Ride7具有设置stdio功能以使用该设备所需的软件。我不知道这是如何工作的以及我需要做什么。我将设备设置为使用USART1用于此目的。我查看了设置并找到了UART0 Putchar选项。我的理解是,自从我设置USART1后,我不想使用它,所以我将选项设置为no。当我这样做时,我收到以下错误:
C:\Program Files (x86)\Raisonance\Ride\Lib\ARM\smallprintf_thumb.a(_SP_puts.o): In function `puts':
_SP_puts.c:(.text+0x74): undefined reference to `__io_putchar'
collect2: ld returned 1 exit status
Error Code: 1
Build failed
将选项转换为yes会删除此错误。
所以我的问题是UART0 putchar设置是做什么的?我想要打开还是关闭。此外,如果所有这些都由Ride7处理,我甚至需要设置USART1吗?
答案 0 :(得分:0)
__ io_putchar(),因此像printf这样的函数可以使用它在某处输出字符串。但是当你禁用UART0 putchar时,你不会声明任何替换__io_putchar()。
来自racenance入门指南:
B)“包括UART0 Putchar” 此选项添加“io_putchar.a”(或“io_putchar_thumb.a”),其中包括标准putchar和 使用UART0的getchar函数。它应该与“UART0_stdio.h”一起使用 (而不是“stdio.h”)。它还使用stdout(如printf)将函数的输出重定向到 UART0。 “TEST”示例显示了如何使用它。图书馆的资源可以在 “C:\ Program Files \ Raisonance \ Ride \ LIB \ ARM \ IO_PUTCHAR \ ...” 您可以自由使用和分发它们。
查看“C:\ Program Files \ Raisonance \ Ride \ lib \ ARM \ io_putchar”中的示例,其中显示了如何编写自己的__io_putchar()。
使用UART1编写自己的文件,并禁用UART0 putchar。