无法使用printf命令构建atmel studio 6.2项目



我是Atmel Studio的新手。我用ATSAMV71Q21设备创建了新的GCC C执行项目。在main.c文件中添加了printf,然后运行build,得到了一堆"未定义的引用(_write, _fsta等)错误"。我尝试了Atmel"入门"的例子,它工作得很好。我该如何解决这个问题?下面是代码和错误消息。谢谢你的帮助。

#include "sam.h"
#include <stdio.h>
#include <stdbool.h>
int main(void)
{
    /* Initialize the SAM system */
    SystemInit();
    while (1) 
    {
        printf("abc");
        //TODO:: Please write your application code 
    }
}

d:/atmel/atmel toolchain/arm gcc/native/4.8.1443/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/4.8.4/../../..//arm-none-eabi/lib/armv7e-mlib .a(lib_a- sbrr .o): In function '_sbrk_r':D:Atmelsamv71_softpack_1.4_for_astudio_6_2studioAtmelsamv71_Xplained_UltraexamplestesttestDebug sbrr .c(1,1):错误:未定义的引用'_sbrk'

我还不知道如何用一个基本的c程序(#include "sam.h")做你想做的事情,但如果你愿意使用ASF API,我可以帮助你。

您必须首先生成一个c - asf项目。然后使用ASF向导将标准串行I/O添加到项目中。正确配置,并打印,放置,…将打印到连接到控制器的终端程序。

#include <asf.h>
#include "stdio_serial.h"
static void configure_console(void)
{
    const usart_serial_options_t uart_serial_options = {
        .baudrate = CONF_UART_BAUDRATE,
        .paritytype = CONF_UART_PARIT
    };
    /* Configure console UART. */
    sysclk_enable_peripheral_clock(CONSOLE_UART_ID);
    stdio_serial_init(CONF_UART, &uart_serial_options);
}
int main(void) 
{
    /* Insert system clock initialization code here (sysclk_init()). */
    sysclk_init();
    board_init();
    configure_console();
    while (1) {
        printf("abc");
    }
    return 0;
}    

这适用于Arduino Due,它有一个SAM3X8E控制器。

如果您只是想修复链接错误,那么您可以通过进入Project->ASF向导并向下滚动到标准串行I/O并单击添加来添加标准串行I/O。

虽然这将修复链接器错误,但它可能不会像您期望的那样。你要打印到哪里?是否有显示器连接到您的嵌入式设备?然后,您需要为该显示及其关联的api使用特定的驱动程序。

如果你只是使用printf()调试目的,而连接到您的pc,那么我建议使用atmel调试器跟踪代码执行,检查变量等

相关内容

  • 没有找到相关文章

最新更新