首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用printf的atmel传感器

使用printf的atmel传感器
EN

Stack Overflow用户
提问于 2013-04-05 17:13:11
回答 3查看 4.6K关注 0票数 2

我有一个爱特梅尔UC3-L0和罗盘传感器。现在我安装AtmelStudio并将一些演示代码下载到主板上。但我不知道演示代码中的函数printf将在何处显示数据。我应该怎么做才能获得数据?

EN

回答 3

Stack Overflow用户

发布于 2013-04-05 20:51:41

printf函数输出到stdout。

通常在没有操作系统的“裸”处理器上,您需要定义如何从物理接口(通常是USART、控制台端口、USB端口、4端口LCD接口等)发送或接收字符。因此,通常情况下,您可能希望使用处理器主板的USART端口通过串行电缆连接到运行Hyperterm、PuTTY或类似产品的PC。

从本质上讲,您需要

  • 使用fdev_setup_stream()宏和
  • 创建FILE流,并提供指向函数get()put()的指针,这些函数确切地告诉printf()函数如何从该流读取和写入该流(例如,读/写USART、液晶显示器等)。H29
  • 您的库可能已经包含此类函数(加上正确的端口初始化函数),如uart.c/.h、lcd.c/.h等。

在stdio.h的文档(例如here)中查找以下内容:printf()fdev_setup_stream()

如果您已经下载了Atmel Studio,您可以查看stdiodemo.c代码以获得更深入的了解。

票数 3
EN

Stack Overflow用户

发布于 2015-09-02 01:02:21

为了在ATMEL studio中使用printf,您应该检查以下内容:

  1. 从项目-> ASF向导添加并应用标准串行I/O模块。
  2. 也从ASF向导添加USART模块。
  3. 在main函数之前包含以下代码片段。

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

从主function.

  • Now转到tools->extension

  • ,确保在system_init()之后调用configure_console。添加终端窗口扩展。

  • 构建并运行您的程序,然后从视图->终端窗口打开终端窗口。把你的设备运行在正确的com端口上,并将波特率设置为115200,然后点击终端窗口上的connect。

  • 你现在应该可以看到printf语句了。(浮点无法在Atmel studio中打印)
票数 3
EN

Stack Overflow用户

发布于 2016-05-26 07:35:34

最近,我自己也对此感到困惑。我已经安装了Atmel Studio7.0,并通过一个示例项目使用了SAMD21开发板,其中调用了printf。

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

代码语言:javascript
复制
/*!
 * \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 Corp. EDBG USB Port (COM3)“。但是,此端口的“属性”之一被列为9600位/秒。我将其从9600更改为115200,以与上面的配置部分保持一致。

最后,我运行PuTTY.exe并将Connection-->Serial设置为COM3和115200波特。然后我转到会话,然后单击串行连接类型,然后单击打开按钮。然后,BAM,这是我通过PuTTY输出的printf。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15830019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档