打印

跑一下SAM4N例程(八):延时

[复制链接]
604|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

打开例程很简单只要在Atmel Studio6.2的环境下,插入开发板:


这个是个ASF函数库中的函数。

delay.h

它利用sysclk_get_cpu_hz()把sysclk_init()的时钟调出来。

而delay.h中也只有四个可调函数:

#define delay_init(fcpu_hz)

/**
* [url=home.php?mod=space&uid=82890]@DEF[/url] delay_s
* [url=home.php?mod=space&uid=247401]@brief[/url] Delay in seconds.
* @param delay Delay in seconds
*/
#define delay_s(delay)      cpu_delay_ms(1000 * delay, F_CPU)

/**
* @def delay_ms
* @brief Delay in milliseconds.
* @param delay Delay in milliseconds
*/
#define delay_ms(delay)     cpu_delay_ms(delay, F_CPU)

/**
* @def delay_us
* @brief Delay in microseconds.
* @param delay Delay in microseconds
*/
#define delay_us(delay)     cpu_delay_us(delay, F_CPU)
而主程序更简单只有几行:

#include <board.h>
#include <delay.h>
#include <gpio.h>

int main(void)
{
        sysclk_init();
        board_init();

        while (true) {
                for (int i = 0; i < 5; i++) {
                        gpio_toggle_pin(LED0_GPIO);
                        delay_s(1);
                }

                for (int i = 0; i < 50; i++) {
                        gpio_toggle_pin(LED0_GPIO);
                        delay_ms(100);
                }

                for (int i = 0; i < 5000; i++) {
                        gpio_toggle_pin(LED0_GPIO);
                        delay_us(100);
                }
        }
}
运行结果:

板子上的LED0闪几下然后一灭一亮,又一灭一亮,反复循环。


相关帖子

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

本版积分规则

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

2398

主题

6956

帖子

67

粉丝