打印
[Atmel]

SAML21走起2:查询方式UART

[复制链接]
2892|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 ddllxxrr 于 2015-7-6 14:18 编辑

接着上次的工程,加入一个USART模块,在加的时候提示要带中断的还是查询的,我这次选查询的:


然后选ASF EXPLORER 则出现如下画面:

再点Quick start guide ,然后出现如下:附链接:http://asf.atmel.com/docs/3.24.2/saml21/html/asfdoc_sam0_sercom_usart_basic_use_case.html


按照提示,完成代码,以下是输出结果:


以下是代码:

#include <asf.h>
struct usart_module usart_instance;
void configure_usart(void);
void configure_usart(void)
{
        struct usart_config config_usart;
        usart_get_config_defaults(&config_usart);
        config_usart.baudrate    = 9600;
        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;
        while (usart_init(&usart_instance,
        EDBG_CDC_MODULE, &config_usart) != STATUS_OK) {
        }
        usart_enable(&usart_instance);
}
int main (void)
{
        system_init();
        configure_usart();
        
        uint8_t string[] = "Hello World!\r\n";
        usart_write_buffer_wait(&usart_instance, string, sizeof(string));
        uint16_t temp;
        while (true) {
                if (usart_read_wait(&usart_instance, &temp) == STATUS_OK) {
                        while (usart_write_wait(&usart_instance, temp) != STATUS_OK) {
                        }
                }
        }

        
}



相关帖子

沙发
电子write_cai| | 2016-2-2 16:08 | 只看该作者
你好,版主,我在弄这个串口的问题,虽然我的是ATSAML22,但兼容的,我在你的代码中 添加了
  
printf("Usart data is %d",usart_instance->hw.usart->DATA.reg); 但是首先提示我一个错误就是 usart_instance have “struct_module”
其次就是这个printf函数也不能正常使用

使用特权

评论回复
板凳
ddllxxrr|  楼主 | 2016-2-2 19:06 | 只看该作者
电子write_cai 发表于 2016-2-2 16:08
你好,版主,我在弄这个串口的问题,虽然我的是ATSAML22,但兼容的,我在你的代码中 添加了
    ...

你的工程缺少应包含的模块

使用特权

评论回复
地板
电子write_cai| | 2016-2-3 09:54 | 只看该作者
/**
* \file
*
* \brief Empty user application template
*
*/

/**
* \mainpage User Application template doxygen documentation
*
* \par Empty user application template
*
* Bare minimum empty user application template
*
* \par Content
*
* -# Include the ASF header files (through asf.h)
* -# Minimal main function that starts with a call to system_init()
* -# "Insert application code here" comment
*
*/

/*
* Include header files for all drivers that have been imported from
* Atmel Software Framework (ASF).
*/
/*
* Support and FAQ: visit <a href="http://www.atmel.com/design-support/">Atmel Support</a>
*/


#include <asf.h>
#include <stdio.h>

//#include <NskBMD.h>
#define LED 91 //定义LED所使用的IO口为 PC27
#define KEY 65 //定义KEY所使用的IO口为 PC01
void port_init(void);
void configure_usart(void);
//! [setup_config]
struct usart_module usart_instance;
//! [setup_config]

/***********************************************/
//串口初始化
/**********************************************/

void configure_usart(void)
{
         
        //! [setup_config]
        struct usart_config config_usart;
        //! [setup_config]
       
        //! [setup_config_defaults]
        usart_get_config_defaults(&config_usart);
        //! [setup_config_defaults]

        //! [setup_change_config]
        //USART  PORT  PA12 PA13.
        config_usart.baudrate    = 9600;
        config_usart.mux_setting = USART_RX_3_TX_2_XCK_3;
        config_usart.pinmux_pad0 = PINMUX_UNUSED;//PINMUX_PA12D_SERCOM3_PAD0;
        config_usart.pinmux_pad1 = PINMUX_UNUSED;//PINMUX_PA13D_SERCOM3_PAD1;
        config_usart.pinmux_pad2 = PINMUX_PC24D_SERCOM4_PAD2;//PINMUX_UNUSED;
        config_usart.pinmux_pad3 = PINMUX_PC25D_SERCOM4_PAD3;//PINMUX_UNUSED;
        //! [setup_change_config]

        //! [setup_set_config]
        while (usart_init(&usart_instance,
        SERCOM4, &config_usart) != STATUS_OK) {
               
        }
        //! [setup_set_config]

        //! [setup_enable]
        usart_enable(&usart_instance);
        //! [setup_enable]
}




/******************************************************/
// # IO口初始化
/******************************************************/
void port_init(void)
{
        struct port_config config_port_pin;
        port_get_config_defaults(&config_port_pin);
       
        config_port_pin.direction = PORT_PIN_DIR_OUTPUT; //配置IO口为输出模式;
        port_pin_set_config(LED,&config_port_pin); //初始化LED对应的IO口;
       
        config_port_pin.direction = PORT_PIN_DIR_INPUT; //配置IO口为输入模式;
        config_port_pin.input_pull = PORT_PIN_PULL_UP; //配置IO口为PULL 上拉;
        port_pin_set_config(KEY,&config_port_pin);       
}

int main(void)
{
        system_init();
    port_init(); //端口初始化;
       
        //! [setup_init]
        configure_usart();
        //! [setup_init]
       
        //! [main_send_string]
        uint8_t string[] = "Hello World!\r\n";
        usart_write_buffer_wait(&usart_instance, string, sizeof(string));
        //printf("data is %ld",(usart_instance->hw->USART.DATA->reg));   //添加这块代码就会报警出错。
        //! [main_send_string]
    uint16_t temp;
        //! [main_loop]
        while (1) {
                if (usart_read_wait(&usart_instance, &temp) == STATUS_OK) {
                        //! [main_read]
                        //! [main_write]
                        while (usart_write_wait(&usart_instance, temp) != STATUS_OK) {
                        }
                        //! [main_write]
                }
        }
        //! [main]
}
       
版主认为我缺哪块?并且查询方式的话,我串口终端接受到的数据有丢包.

使用特权

评论回复
5
ddllxxrr|  楼主 | 2016-2-3 15:47 | 只看该作者
电子write_cai 发表于 2016-2-3 09:54
版主认为我缺哪块?并且查询方式的话,我串口终端接受到的数据有丢包.

上个帖子,提示数据结构没有定义我想是ASF的某一个模块没有包含进来,这次楼主换了套路。我想就查一下那个CLOCK_CONFIG.H看看时钟

使用特权

评论回复
6
电子write_cai| | 2016-2-3 16:30 | 只看该作者
ddllxxrr 发表于 2016-2-3 15:47
上个帖子,提示数据结构没有定义我想是ASF的某一个模块没有包含进来,这次楼主换了套路。我想就查一下那 ...

不是的,我提供的代码就是出错的代码。我能问下一个奇怪的问题吗?
   就是我编译后生成elf和hex文件,然后我programming,程序也能烧写进去,就是我在AtmelStudio上面选择start debug的时候,提示我无法load xx.elf文件,我也是第一次使用AtmelStudio。请教群主,这个这么解决。有什么思路吗
  谢谢

使用特权

评论回复
7
电子write_cai| | 2016-2-3 17:04 | 只看该作者
ddllxxrr 发表于 2016-2-3 15:47
上个帖子,提示数据结构没有定义我想是ASF的某一个模块没有包含进来,这次楼主换了套路。我想就查一下那 ...

IAR 现在有没有SAML系列的IC啊? 我看IAR现在还没有,还是我IAR版本太低了的原因?

使用特权

评论回复
8
ddllxxrr|  楼主 | 2016-2-3 18:41 | 只看该作者
电子write_cai 发表于 2016-2-3 16:30
不是的,我提供的代码就是出错的代码。我能问下一个奇怪的问题吗?
   就是我编译后生成elf和hex文件,然 ...

你用的AtmelStudio是多少版本的,另外仿真用的是EDBG么???

使用特权

评论回复
9
ddllxxrr|  楼主 | 2016-2-3 18:50 | 只看该作者
电子write_cai 发表于 2016-2-3 17:04
IAR 现在有没有SAML系列的IC啊? 我看IAR现在还没有,还是我IAR版本太低了的原因? ...

IAR确实不支持SAML那你还用AtmelStudio吧,最新的支持ATSAMB11G18A
ATSAMD21E15BU
ATSAMD21E16BU
ATSAMD21G15B
ATSAMD21G16B
ATSAMD21J15B
ATSAMD21J16B

使用特权

评论回复
10
ddllxxrr|  楼主 | 2016-2-3 18:50 | 只看该作者
电子write_cai 发表于 2016-2-3 17:04
IAR 现在有没有SAML系列的IC啊? 我看IAR现在还没有,还是我IAR版本太低了的原因? ...

IAR确实不支持SAML那你还用AtmelStudio吧,最新的支持ATSAMB11G18A
ATSAMD21E15BU
ATSAMD21E16BU
ATSAMD21G15B
ATSAMD21G16B
ATSAMD21J15B
ATSAMD21J16B

使用特权

评论回复
11
电子write_cai| | 2016-2-4 12:57 | 只看该作者
ddllxxrr 发表于 2016-2-3 18:41
你用的AtmelStudio是多少版本的,另外仿真用的是EDBG么???

使用DEBUG的接口啊,就是自带的USB口,难道还要购买什么另外设备才能debug吗?

使用特权

评论回复
12
homey123| | 2016-2-4 14:47 | 只看该作者
电子write_cai 发表于 2016-2-3 17:04
IAR 现在有没有SAML系列的IC啊? 我看IAR现在还没有,还是我IAR版本太低了的原因? ...

IAR目前支持L系列的,需要升级到最新版本
https:// www .iar.com/device-search/#!?devices_vendor=Atmel&devices_architecture=ARM&devices_family=ATSAML21&tab=devices

使用特权

评论回复
13
ddllxxrr|  楼主 | 2016-2-4 19:30 | 只看该作者
电子write_cai 发表于 2016-2-4 12:57
使用DEBUG的接口啊,就是自带的USB口,难道还要购买什么另外设备才能debug吗? ...

不用,我这边EDBG好用

使用特权

评论回复
14
ddllxxrr|  楼主 | 2016-2-4 19:32 | 只看该作者
homey123 发表于 2016-2-4 14:47
IAR目前支持L系列的,需要升级到最新版本
https:// www .iar.com/device-search/#!?devices_vendor=Atmel ...

链接打不开

使用特权

评论回复
15
homey123| | 2016-2-5 14:40 | 只看该作者
把www空格删掉就可以了。权限太低发不了链接啊:'(

使用特权

评论回复
16
A1046983970| | 2017-8-11 14:16 | 只看该作者
楼主,有一个问题很疑惑,上诉例程中,如何确定uart对应的io口?

使用特权

评论回复
17
jianghuailiang| | 2019-2-1 17:24 | 只看该作者
EDBG_CDC_SERCOM_MUX_SETTING   

Error                'EDBG_CDC_SERCOM_MUX_SETTING' undeclared (first use in this function)        test2       
Severity        Code        Description        Project        File        Line
Error                'EDBG_CDC_SERCOM_PINMUX_PAD1' undeclared (first use in this function)        test2       
Error                'EDBG_CDC_SERCOM_PINMUX_PAD2' undeclared (first use in this function)        test2       
Error                'EDBG_CDC_SERCOM_PINMUX_PAD3' undeclared (first use in this function)        test2       
Error                'usart_instance' undeclared (first use in this function)        test2       
Error                'EDBG_CDC_MODULE' undeclared (first use in this function)        test2       

  你好,我想问一下  这是在哪定义的  不识别。

使用特权

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

本版积分规则

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

2398

主题

6954

帖子

67

粉丝