00001
00081 #include "gpio.h"
00082 #include "pm_at32ap7000.h"
00083 #include "board.h"
00084
00085
00088
00089 #if BOARD == EVK1100
00090 # define EXAMPLE_GCLK_ID 0
00091 # define EXAMPLE_GCLK_PIN AVR32_PM_GCLK_0_1_PIN
00092 # define EXAMPLE_GCLK_FUNCTION AVR32_PM_GCLK_0_1_FUNCTION
00093
00094 #elif BOARD == EVK1101
00095 # define EXAMPLE_GCLK_ID 2
00096 # define EXAMPLE_GCLK_PIN AVR32_PM_GCLK_2_PIN
00097 # define EXAMPLE_GCLK_FUNCTION AVR32_PM_GCLK_2_FUNCTION
00098
00099 #elif BOARD == STK1000
00100 # define EXAMPLE_GCLK_ID 0
00101 # define EXAMPLE_GCLK_PIN AVR32_PM_GCLK_0_PIN
00102 # define EXAMPLE_GCLK_FUNCTION AVR32_PM_GCLK_0_FUNCTION
00103 #endif
00104
00105 #if !defined(EXAMPLE_GCLK_ID) || \
00106 !defined(EXAMPLE_GCLK_PIN) || \
00107 !defined(EXAMPLE_GCLK_FUNCTION)
00108 # error The generic clock configuration to use in this example is missing.
00109 #endif
00111
00112
00113
00114
00115 void local_start_pll0()
00116 {
00117
00118 pm_reset();
00119
00120
00121 pm_pll_opt_t pm_pll_opt = {
00122 .pll_id = 0,
00123 .mul = 5,
00124 .div = 1,
00125 .osc_id = 0,
00126 .count = 16,
00127 .wait_for_lock = 1,
00128 };
00129 pm_start_pll(&pm_pll_opt);
00130
00131
00132 pm_set_clock_domain_scaler(PM_HSB_DOMAIN, 2);
00133 pm_set_clock_domain_scaler(PM_PBB_DOMAIN, 2);
00134 pm_set_clock_domain_scaler(PM_PBA_DOMAIN, 4);
00135
00136
00137 pm_gen_clk_opt_t pm_gen_clk_opt = {
00138 .clock_source = PM_PLL0,
00139 .divider = 0,
00140 };
00141 pm_start_generic_clock(EXAMPLE_GCLK_ID, &pm_gen_clk_opt);
00142
00143
00144 gpio_enable_module_pin(EXAMPLE_GCLK_PIN, EXAMPLE_GCLK_FUNCTION);
00145
00146
00147 pm_set_mclk_source(PM_PLL0);
00148 }
00149
00150
00151
00152
00153
00154 static void software_delay(void)
00155 {
00156 volatile int i;
00157 for (i=0; i<1000000; i++);
00158 }
00159
00160
00161
00162
00163
00164
00165
00166 int main(void)
00167 {
00168
00169
00170 local_start_pll0();
00171
00172 LED_Off(0xff);
00173
00174
00175 while(1)
00176 {
00177 LED_Toggle(LED0);
00178 software_delay();
00179 }
00180 }