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

[复制链接]
700|0
ddllxxrr 发表于 2015-3-3 19:00 | 显示全部楼层 |阅读模式

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


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

delay.h

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

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

  1. #define delay_init(fcpu_hz)

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

  8. /**
  9. * @def delay_ms
  10. * @brief Delay in milliseconds.
  11. * @param delay Delay in milliseconds
  12. */
  13. #define delay_ms(delay)     cpu_delay_ms(delay, F_CPU)

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

  1. #include <board.h>
  2. #include <delay.h>
  3. #include <gpio.h>

  4. int main(void)
  5. {
  6.         sysclk_init();
  7.         board_init();

  8.         while (true) {
  9.                 for (int i = 0; i < 5; i++) {
  10.                         gpio_toggle_pin(LED0_GPIO);
  11.                         delay_s(1);
  12.                 }

  13.                 for (int i = 0; i < 50; i++) {
  14.                         gpio_toggle_pin(LED0_GPIO);
  15.                         delay_ms(100);
  16.                 }

  17.                 for (int i = 0; i < 5000; i++) {
  18.                         gpio_toggle_pin(LED0_GPIO);
  19.                         delay_us(100);
  20.                 }
  21.         }
  22. }
运行结果:

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


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

2404

主题

7001

帖子

68

粉丝
快速回复 在线客服 返回列表 返回顶部