SAMD21のクロックを可能な限り速く設定しようとしています。だから私は一般的なクロックジェネレータ0(私のメインクロック)を供給するデジタル位相ロックループを供給するための汎用クロックを生成するために、汎用クロックジェネレータ1(プリスケーラ8) CPUをクロックする必要がありますが、マイクロは非常にゆっくりと実行されていますが、どこでミスをしましたか? このガイドhttp://borkedlabs.com/2014/08/21/asf-samd21-dpll-for-internal-clock-from-internal-8mhz/に従っていますが、動作しません。ここに私のコードです:私は(これらのマクロは、これだけの場合には、どこかで参照されている場合、私は知らない)の変更を反映するためにconf_clocks.hヘッダーを更新SAMD21のクロック設定
void system_clock_init(void)
{
SYSCTRL->INTFLAG.reg = SYSCTRL_INTFLAG_BOD33RDY | SYSCTRL_INTFLAG_BOD33DET | SYSCTRL_INTFLAG_DFLLRDY;
/* switch off all peripheral clocks to save power */
//_switch_peripheral_gclk();
/* configure and enable generic clock generator 1 (GENCTRL and GENDIV registers of GCLK module) */
struct system_gclk_gen_config gclk_gen_config1;
system_gclk_gen_get_config_defaults(&gclk_gen_config1);
gclk_gen_config1.source_clock = SYSTEM_CLOCK_SOURCE_OSC8M;
gclk_gen_config1.division_factor = 8;
gclk_gen_config1.output_enable = false;
system_gclk_gen_set_config(GCLK_GENERATOR_1,&gclk_gen_config1);
system_gclk_gen_enable(GCLK_GENERATOR_1);
/* configure and enable generic clock for DPLL (CLKCTRL of GCLK module) */
struct system_gclk_chan_config gclk_chan_config;
system_gclk_chan_get_config_defaults(&gclk_chan_config);
gclk_chan_config.source_generator = GCLK_GENERATOR_1;
system_gclk_chan_set_config(SYSCTRL_GCLK_ID_FDPLL,&gclk_chan_config);
system_gclk_chan_enable(SYSCTRL_GCLK_ID_FDPLL);
/* configure and enable clock source: DPLL (SYSCTRL registers) */
struct system_clock_source_dpll_config dpll_config;
system_clock_source_dpll_get_config_defaults(&dpll_config);
dpll_config.reference_clock = SYSTEM_CLOCK_SOURCE_DPLL_REFERENCE_CLOCK_GCLK;
dpll_config.reference_divider = 1;
dpll_config.reference_frequency = 1000000;
dpll_config.output_frequency = 30000000;
system_clock_source_dpll_set_config(&dpll_config);
system_clock_source_enable(SYSTEM_CLOCK_SOURCE_DPLL);
/* set NVM wait states */
system_flash_set_waitstates(2);
/* configure and enable generic clock 0 (GCLK_MAIN) */
struct system_gclk_gen_config gclk_gen_config0;
system_gclk_gen_get_config_defaults(&gclk_gen_config0);
gclk_gen_config0.source_clock = SYSTEM_CLOCK_SOURCE_DPLL;
gclk_gen_config0.division_factor = 1;
system_gclk_gen_set_config(GCLK_GENERATOR_0,&gclk_gen_config0);
system_gclk_gen_enable(GCLK_GENERATOR_0);
}
と私はだsystem_clock_init()関数を変更system_init()から呼び出されます。