这个例子展示了一个更进一步的使用系统时钟服务的例子。这个例子将主系统时钟配置到2MHz,使用内部RC振荡器校准2MHz内部32kHz振荡器。外设总线时钟将运行在同CPU时钟一样的频率,USB时钟将被配置成使用内部32MHz(通常)RC效验到48MHz带有USB启始帧作为效验参考。
配置为conf_clock.h
当在程序中加入sysclk_init();
时自动就配置了。
#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_RC2MHZ
#define CONFIG_OSC_AUTOCAL_RC2MHZ_REF_OSC OSC_ID_RC32KHZ
#define CONFIG_USBCLK_SOURCE USBCLK_SRC_RCOSC
#define CONFIG_OSC_RC32_CAL 48000000UL
#define CONFIG_OSC_AUTOCAL_RC32MHZ_REF_OSC OSC_ID_USBSOF
实际的配置为:
- #ifndef CONF_CLOCK_H_INCLUDED
- #define CONF_CLOCK_H_INCLUDED
- #define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_RC2MHZ
- //#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_RC32MHZ
- //#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_RC32KHZ
- //#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_XOSC
- //#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_PLL
- #define CONFIG_OSC_AUTOCAL_RC2MHZ_REF_OSC OSC_ID_RC32KHZ
- /* Fbus = Fsys / (2 ^ BUS_div) */
- #define CONFIG_SYSCLK_PSADIV SYSCLK_PSADIV_1
- #define CONFIG_SYSCLK_PSBCDIV SYSCLK_PSBCDIV_1_2
- //#define CONFIG_PLL0_SOURCE PLL_SRC_XOSC
- #define CONFIG_PLL0_SOURCE PLL_SRC_RC2MHZ
- //#define CONFIG_PLL0_SOURCE PLL_SRC_RC32MHZ
- /* Fpll = (Fclk * PLL_mul) / PLL_div */
- #define CONFIG_PLL0_MUL (32000000UL / BOARD_XOSC_HZ)
- #define CONFIG_PLL0_DIV 1
- /* External oscillator frequency range */
- /** 0.4 to 2 MHz frequency range */
- //#define CONFIG_XOSC_RANGE XOSC_RANGE_04TO2
- /** 2 to 9 MHz frequency range */
- //#define CONFIG_XOSC_RANGE XOSC_RANGE_2TO9
- /** 9 to 12 MHz frequency range */
- //#define CONFIG_XOSC_RANGE XOSC_RANGE_9TO12
- /** 12 to 16 MHz frequency range */
- //#define CONFIG_XOSC_RANGE XOSC_RANGE_12TO16
- /* DFLL autocalibration */
- //#define CONFIG_OSC_AUTOCAL_RC2MHZ_REF_OSC OSC_ID_RC32KHZ
- //#define CONFIG_OSC_AUTOCAL_RC32MHZ_REF_OSC OSC_ID_XOSC
- /* The following example clock configuration definitions can be used in XMEGA
- * devices that contain a USB controller. It configures the USB controller clock
- * source to use the internal (nominally) 32MHz RC oscillator, up-calibrated to
- * run at 48MHz via the periodic 1ms USB Start Of Frame packets sent by the
- * host. The USB controller requires 48MHz for Full Speed operation, or 6MHz
- * for USB Low Speed operation.
- *
- * Note that when the 32MHz RC oscillator is tuned to 48MHz, it cannot be used
- * directly as the system clock source; it must either be prescaled down to a
- * speed below the maximum operating frequency given in the datasheet, or an
- * alternative clock source (e.g. the internal 2MHz RC Oscillator, multiplied
- * to a higher frequency via the internal PLL module) must be used instead.
- */
- #define CONFIG_USBCLK_SOURCE USBCLK_SRC_RCOSC
- #define CONFIG_OSC_RC32_CAL 48000000UL
- #define CONFIG_OSC_AUTOCAL_RC32MHZ_REF_OSC OSC_ID_USBSOF
- //#define CONFIG_OSC_AUTOCAL OSC_ID_RC32MHZ
- /* Use to enable and select RTC clock source */
- //#define CONFIG_RTC_SOURCE SYSCLK_RTCSRC_ULP
- #endif /* CONF_CLOCK_H_INCLUDED */
上述编译一下,通过说明没有问题
|