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

时间:2015-10-14 01:55:05

标签: c microcontroller atmel atsam3x

我是Atmel Studio的新手。我用ATSAMV71Q21设备创建了新的GCC C Execute项目。在main.c文件中添加了printf然后运行build并获得了一堆“未定义的引用(_write,_fsta等)错误。我尝试了Atmel”get-started“示例,它工作正常。我怎样才能解决这个问题?下面是代码和错误消息。感谢您的帮助。

#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-m\libc.a(lib_a-sbrkr.o):在函数'_sbrk_r'中:   D:\ Atmel \ samv71_softpack_1.4_for_astudio_6_2 \ studio \ Atmel \ samv71_Xplained_Ultra \ examples \ test \ test \ Debug \ sbrkr.c(1,1):错误:未定义引用'_sbrk'

2 个答案:

答案 0 :(得分:1)

我还不知道如何使用简单的C程序(#include "sam.h")来做你想做的事,但如果你愿意使用ASF API,我可以帮助你。

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

#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;
}    

这适用于具有SAM3X8E控制器的Arduino Due。

答案 1 :(得分:0)

如果您只想修复该链接错误,则可以通过转到Project-&gt; ASF向导并向下滚动到标准串行I / O并单击添加来添加标准串行I / O.

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

如果您在连接到电脑时只是使用printf()进行调试,那么我建议使用atmel调试器来执行代码,检查变量等。