[Atmel] 跑一下SAM4N例程(四):时钟1

[复制链接]
ddllxxrr 发表于 2015-2-26 21:05 | 显示全部楼层 |阅读模式
在Atmle Studio6.2环境下,插上开发板就可自动识别。这时真接打开例程即可:



时钟配置在conf_clock.h中。


  1. #ifndef CONF_CLOCK_H_INCLUDED
  2. #define CONF_CLOCK_H_INCLUDED

  3. // ===== System Clock (MCK) Source Options
  4. //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_SLCK_RC
  5. //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_SLCK_XTAL
  6. //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_SLCK_BYPASS
  7. //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_MAINCK_4M_RC
  8. //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_MAINCK_8M_RC
  9. //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_MAINCK_12M_RC
  10. //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_MAINCK_XTAL
  11. //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_MAINCK_BYPASS
  12. #define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_PLLACK

  13. // ===== System Clock (MCK) Prescaler Options   (Fmck = Fsys / (SYSCLK_PRES))
  14. //#define CONFIG_SYSCLK_PRES          SYSCLK_PRES_1
  15. #define CONFIG_SYSCLK_PRES          SYSCLK_PRES_2
  16. //#define CONFIG_SYSCLK_PRES          SYSCLK_PRES_4
  17. //#define CONFIG_SYSCLK_PRES          SYSCLK_PRES_8
  18. //#define CONFIG_SYSCLK_PRES          SYSCLK_PRES_16
  19. //#define CONFIG_SYSCLK_PRES          SYSCLK_PRES_32
  20. //#define CONFIG_SYSCLK_PRES          SYSCLK_PRES_64
  21. //#define CONFIG_SYSCLK_PRES          SYSCLK_PRES_3

  22. // ===== PLL0 (A) Options   (Fpll = (Fclk * PLL_mul) / PLL_div)
  23. // Use mul and div effective values here.
  24. #define CONFIG_PLL0_SOURCE          PLL_SRC_MAINCK_8M_RC
  25. #define CONFIG_PLL0_MUL             25
  26. #define CONFIG_PLL0_DIV             1

  27. // ===== Target frequency (System clock)
  28. // - Internal RC frequency: 8MHz
  29. // - System clock source: PLLA
  30. // - System clock prescaler: 2 (divided by 2)
  31. // - PLLA source: 8M_RC
  32. // - PLLA output: 8M_RC * 25 / 1
  33. // - System clock: 8M_RC * 25 / 1 / 2 = 100MHz

  34. #endif /* CONF_CLOCK_H_INCLUDED */

而本例中的管脚LED定义在主程的最上边

  1. #if ((BOARD == SAM4CMP_DB) || (BOARD == SAM4CMS_DB))
  2. #  define EXAMPLE_LED_GPIO    LED4_GPIO
  3. #else
  4. #  define EXAMPLE_LED_GPIO    LED0_GPIO
  5. #endif

而延时函数用了系统滴答时钟,其中断函数也在主函数的上边:

  1. void SysTick_Handler(void)
  2. {
  3.         ul_ms_ticks++;
  4. }

而主函数只是每隔半分钟切换一下LED状态

  1. int main(void)
  2. {
  3.         sysclk_init();
  4.         board_init();

  5.         /* Setup SysTick Timer for 1 msec interrupts */
  6.         if (SysTick_Config(sysclk_get_cpu_hz() / 1000)) {
  7.                 while (1) {  /* Capture error */
  8.                 }
  9.         }

  10.         while (1) {
  11.                 ioport_toggle_pin_level(EXAMPLE_LED_GPIO);
  12.                 mdelay(500);
  13.         }
  14. }


本帖子中包含更多资源

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

×
jiang390625 发表于 2015-2-27 17:12 | 显示全部楼层
前排学习下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

2403

主题

6994

帖子

68

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