用printf爱特梅尔传感器(atmel sensor using printf)

2019-10-17 23:34发布

我正在学习嵌入式系统。 我有一个爱特梅尔UC3-L0和方位传感器。 现在我安装AtmelStudio和下载一些演示代码到板。 但我不知道在哪里在演示代码的函数“printf”上会出现数据。 我应该怎么做才能获得数据?

Answer 1:

为了用printf在ATMEL工作室您应检查以下内容:

  1. 添加和项目 - > ASF向导应用标准串行I / O模块。
  2. 同样来自ASF向导添加USART模块。
  3. 包括主要的功能之前,下面的代码片段。
  static struct usart_module usart_instance; static void configure_console(void) { struct usart_config usart_conf; usart_get_config_defaults(&usart_conf); usart_conf.mux_setting = EDBG_CDC_SERCOM_MUX_SETTING; usart_conf.pinmux_pad0 = EDBG_CDC_SERCOM_PINMUX_PAD0; usart_conf.pinmux_pad1 = EDBG_CDC_SERCOM_PINMUX_PAD1; usart_conf.pinmux_pad2 = EDBG_CDC_SERCOM_PINMUX_PAD2; usart_conf.pinmux_pad3 = EDBG_CDC_SERCOM_PINMUX_PAD3; usart_conf.baudrate = 115200; stdio_serial_init(&usart_instance, EDBG_CDC_MODULE, &usart_conf); usart_enable(&usart_instance); } 
  1. 请确保调用configure_console system_init()的主要功能后。

  2. 现在去工具 - >扩展管理器。 添加终端窗口延伸。

  3. 构建和运行程序,并从视图 - >终端窗口中打开终端窗口。 把到您的设备上运行的正确的COM端口和波特率设置为115200,点击连接PC终端窗口上。
  4. 现在,您应该看到printf语句。 (浮不爱特梅尔Studio取得印刷)


Answer 2:

printf函数输出到标准输出。

一般上不同,需要定义字符如何发送或从一个物理接口(通常是USART,控制台端口,USB端口,4端口LCD接口等)没有接收到操作系统中的“裸”处理器。 所以通常你可能想使用你的处理器板的USART端口连接到使用串行电缆运行超级终端,腻子或类似的电脑。

从本质上说,您需要

  • 创建FILE使用流fdev_setup_stream()宏和
  • 提供函数指针get()put() ,告诉printf()函数究竟如何读取和/到流写入(如读/写一个USART,LCD显示器等)。
  • 你可能有图书馆 - 取决于你的硬件 - 这已经包含这样的功能(加上正确的端口初始化函数),例如像uart.c / .H,lcd.c / .H,等等。

在stdio.h的文件(如这里 ),查找以下: printf()fdev_setup_stream()

如果您已经下载了爱特梅尔Studio中,您可以考虑进一步洞察stdiodemo.c代码。



Answer 3:

我最近在这个令人费解的自己。 我已经安装了爱特梅尔Studio的7.0,并通过在对printf呼叫做出了表率项目使用SAMD21开发局。

在示例代码中,我看到有一个配置部分:

/*!
 * \brief Initialize USART to communicate with on board EDBG - SERCOM 
 * with the following settings.
 * - 8-bit asynchronous USART
 * - No parity
 * - One stop bit
 * - 115200 baud
 */ 
static void configure_usart(void)
{
    struct usart_config config_usart;
    // Get the default USART configuration
    usart_get_config_defaults(&config_usart);
    // Configure the baudrate
    config_usart.baudrate = 115200;
    // Configure the pin multiplexing for USART
    config_usart.mux_setting = EDBG_CDC_SERCOM_MUX_SETTING;
    config_usart.pinmux_pad0 = EDBG_CDC_SERCOM_PINMUX_PAD0;
    config_usart.pinmux_pad1 = EDBG_CDC_SERCOM_PINMUX_PAD1;
    config_usart.pinmux_pad2 = EDBG_CDC_SERCOM_PINMUX_PAD2;
    config_usart.pinmux_pad3 = EDBG_CDC_SERCOM_PINMUX_PAD3;
    // route the printf output to the USART
    stdio_serial_init(&usart_instance, EDBG_CDC_MODULE, &config_usart);
    // enable USART
    usart_enable(&usart_instance);
} 

在Windows设备管理器,我看到有一个“Atmel公司EDBG USB端口(COM3)”下的“端口”中列出。 然而,此端口的“属性”的一个被列为9600个比特每秒。 我改变了这个从9600到115200是与上面的配置部分一致。

最后,我跑PuTTY.exe并设置连接 - >串口设置COM3和115200个波特。 然后我去了会话,然后单击串行连接类型,然后单击打开按钮。 而且,BAM,还有通过腻子我printf的输出。



文章来源: atmel sensor using printf