打印
[Atmel]

用ASF跑SAMD21程序(28) 管脚输出时钟

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

SAMD21的时钟可以通过管脚输出。

首先建立ASF工程,然后添加SYSTEM-I/O Pin Multiplexer模块。




然后添加程序代码。程序清单如下:


<p> </p>
/**
* \file
*
* \brief Empty user application template
*
*/

/**
* \mainpage User Application template doxygen documentation
*
* \par Empty user application template
*
* This is a bare minimum user application template.
*
* For documentation of the board, go \ref group_common_boards "here" for a link
* to the board-specific documentation.
*
* \par Content
*
* -# Include the ASF header files (through asf.h)
* -# Minimal main function that starts with a call to system_init()
* -# Basic usage of on-board LED and button
* -# "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>
*/

static void setup_clock_out_pin(void);
#include <asf.h>
#define CONF_CLOCK_PIN_OUT            PIN_PA28H_GCLK_IO0
#define CONF_CLOCK_PIN_MUX            MUX_PA28H_GCLK_IO0
static void setup_clock_out_pin(void)
{
        struct system_pinmux_config pin_mux;
        system_pinmux_get_config_defaults(&pin_mux);

        /* MUX out the system clock to a I/O pin of the device */
        pin_mux.mux_position = CONF_CLOCK_PIN_MUX;
        system_pinmux_pin_set_config(CONF_CLOCK_PIN_OUT, &pin_mux);
}


int main (void)
{
        system_init();
        setup_clock_out_pin();
        

        // Insert application code here, after the board has been initialized.

        // This skeleton code simply sets the LED to the state of the button.
        while (1) {
                // Is button pressed?
                if (port_pin_get_input_level(BUTTON_0_PIN) == BUTTON_0_ACTIVE) {
                        // Yes, so turn LED on.
                        port_pin_set_output_level(LED_0_PIN, LED_0_ACTIVE);
                } else {
                        // No, so turn LED off.
                        port_pin_set_output_level(LED_0_PIN, !LED_0_ACTIVE);
                }
        }
}

至于运行结果,明天我用示波看一下,看看怎么样???

相关帖子

沙发
86269838| | 2017-3-11 19:23 | 只看该作者
你好,请问运行结果有输出吗?我按照你这个弄了但是没有波形,我用的XPLAINED PRO D21的板子

使用特权

评论回复
板凳
ddllxxrr|  楼主 | 2017-3-11 20:41 | 只看该作者
86269838 发表于 2017-3-11 19:23
你好,请问运行结果有输出吗?我按照你这个弄了但是没有波形,我用的XPLAINED PRO D21的板子 ...

额,我写出来的,都是验证过的

使用特权

评论回复
地板
86269838| | 2017-3-12 09:37 | 只看该作者
跟ASF版本会有影响吗?我还试过你用TC toggle led的程序,我生成的和你的CODE有一点不同。稍微改改能用。这个pinmux的问题跟这个可能有关系吗?

使用特权

评论回复
5
ddllxxrr|  楼主 | 2017-3-12 10:34 | 只看该作者
86269838 发表于 2017-3-12 09:37
跟ASF版本会有影响吗?我还试过你用TC toggle led的程序,我生成的和你的CODE有一点不同。稍微改改能用。这 ...

应该不会

使用特权

评论回复
6
86269838| | 2017-3-12 14:06 | 只看该作者
好的,我再查查,另外题外问个问题,一般做实际的项目用ASF的库吗?还是自个编底层的。?

使用特权

评论回复
7
ddllxxrr|  楼主 | 2017-3-13 09:22 | 只看该作者
86269838 发表于 2017-3-12 14:06
好的,我再查查,另外题外问个问题,一般做实际的项目用ASF的库吗?还是自个编底层的。? ...

老的如MEGA6就不用了。新的尽量ASF吧,因为例程都是ASF的

使用特权

评论回复
8
86269838| | 2017-3-15 15:52 | 只看该作者
弄出来了,conf_clock.h里面相应clock generator的OUTPUT_ENABLE没有设成true。

使用特权

评论回复
9
ddllxxrr|  楼主 | 2017-3-15 15:57 | 只看该作者
86269838 发表于 2017-3-15 15:52
弄出来了,conf_clock.h里面相应clock generator的OUTPUT_ENABLE没有设成true。

祝贺你啊,祝贺你

使用特权

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

本版积分规则

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

2398

主题

6954

帖子

67

粉丝