我正在学习嵌入式系统。 我有一个爱特梅尔UC3-L0和方位传感器。 现在我安装AtmelStudio和下载一些演示代码到板。 但我不知道在哪里在演示代码的函数“printf”上会出现数据。 我应该怎么做才能获得数据?
Answer 1:
为了用printf在ATMEL工作室您应检查以下内容:
- 添加和项目 - > ASF向导应用标准串行I / O模块。
- 同样来自ASF向导添加USART模块。
- 包括主要的功能之前,下面的代码片段。
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); }
请确保调用configure_console system_init()的主要功能后。
现在去工具 - >扩展管理器。 添加终端窗口延伸。
- 构建和运行程序,并从视图 - >终端窗口中打开终端窗口。 把到您的设备上运行的正确的COM端口和波特率设置为115200,点击连接PC终端窗口上。
- 现在,您应该看到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