打印
[Atmel]

用SAM-BA或JLINK跑ATSAM4E16的程序(9)最简printf例程

[复制链接]
861|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ddllxxrr|  楼主 | 2015-11-12 06:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
大家在使用UART都想急于试下好不好用,而这个最好的方法是HELLO WORLD

我说HELLO WORLD 大家都应该明白,就是打印一段文字。但ATMEL SAM4E确很特别。

实现的模块叫Serial Standard I/O

大家别看不起我找到的模块,应为一般情况下只找UART或USART例程。

运行的效果如下:




程序如下:

#include <board.h>
#include <sysclk.h>
#include <stdio_serial.h>

#if SAM
#include <conf_uart_serial.h>
#else
#include <conf_usart_serial.h>
#endif

/*! \brief Main function.
*/
int main(void)
{
        uint32_t ch;

        const usart_serial_options_t usart_serial_options = {
                .baudrate     = USART_SERIAL_EXAMPLE_BAUDRATE,
                .charlength   = USART_SERIAL_CHAR_LENGTH,
                .paritytype   = USART_SERIAL_PARITY,
                .stopbits     = USART_SERIAL_STOP_BIT
        };

        sysclk_init();

        /* Initialize the board.  The board-specific conf_board.h file contains
         * the configuration of the board initialization.
         */
        board_init();

        // Initialize Serial Interface using Stdio Library
        stdio_serial_init(USART_SERIAL_EXAMPLE, &usart_serial_options);

        // Print welcome message
        printf("\n\rHello ATMEL World!\n\r");

        // Get and echo a character forever.
        while (true) {
                scanf("%c",(char*)&ch);

                if (ch) {
                        printf("%c",(char)ch);
                }
        }
}


解析一下:
首先声明了相应的宏。
#define CONF_BOARD_UART_CONSOLE
在conf_uart_serial.h里声明UART相关参数。

#ifndef CONF_USART_SERIAL_H
#define CONF_USART_SERIAL_H

#ifdef __cplusplus
extern "C" {
#endif

// USART serial configuration options
#define USART_SERIAL_EXAMPLE            ((Usart*)CONSOLE_UART)

#define USART_SERIAL_EXAMPLE_BAUDRATE   (115200)
#define USART_SERIAL_CHAR_LENGTH        (US_MR_CHRL_8_BIT)
#define USART_SERIAL_PARITY             (US_MR_PAR_NO)
#define USART_SERIAL_STOP_BIT           (US_MR_NBSTOP_1_BIT)

#ifdef __cplusplus
}
#endif

#endif/* CONF_USART_SERIAL_H_INCLUDED */


用stdio_serial_init初始化串行标准I/O





相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2398

主题

6956

帖子

67

粉丝