|
楼主 |
发表于 2023-12-6 10:39:23
|
显示全部楼层
GD哪款? 如果照抄ST的SystemInit函数有几个地方要改一下, GD官方有说明.
不过最好是用gd自家的库, SystemInit函数自己重写.
比如我的, 注意我用了bootloader, 如果不用bootloader的话, nvic_vector_table_set这行可以不要, 或者把后面的偏移量改成0x0.
GD32F405:
- void SystemInit(void)
- {
- nvic_vector_table_set(NVIC_VECTTAB_FLASH, 0x8000);
- __enable_irq();
- rcu_deinit();
- rcu_osci_on (RCU_HXTAL);
- rcu_osci_stab_wait(RCU_HXTAL);
- rcu_periph_clock_enable (RCU_PMU);
- pmu_ldo_output_select (PMU_LDOVS_HIGH);
- rcu_ahb_clock_config (RCU_AHB_CKSYS_DIV1);
- rcu_apb1_clock_config (RCU_APB1_CKAHB_DIV4); // APB1 84M
- rcu_apb2_clock_config (RCU_APB2_CKAHB_DIV2); // APB2 168M
- rcu_pll_config(RCU_PLLSRC_HXTAL, 8, 168, 2, 10);
- rcu_osci_on (RCU_PLL_CK);
- rcu_osci_stab_wait(RCU_PLL_CK);
- pmu_highdriver_mode_enable();
- while(pmu_flag_get(PMU_FLAG_HDRF) == RESET);
- pmu_highdriver_switch_select (PMU_HIGHDR_SWITCH_EN);
- while(pmu_flag_get(PMU_FLAG_HDSRF) == RESET);
- rcu_system_clock_source_config (RCU_CKSYSSRC_PLLP);
- while(rcu_system_clock_source_get() != RCU_SCSS_PLLP);
- }
复制代码
GD32E230:
- void SystemInit(void)
- {
- nvic_vector_table_set(NVIC_VECTTAB_FLASH, 0x2000);
- __enable_irq();
- rcu_deinit();
- rcu_periph_clock_enable (RCU_PMU);
- pmu_ldo_output_select (PMU_LDOVS_LOW);
- fmc_wscnt_set (WS_WSCNT_0);
- rcu_ahb_clock_config (RCU_AHB_CKSYS_DIV1);
- rcu_apb1_clock_config (RCU_APB1_CKAHB_DIV1);
- rcu_apb2_clock_config (RCU_APB2_CKAHB_DIV1);
- rcu_hxtal_prediv_config (RCU_PLL_PREDV2);
- rcu_pll_config(RCU_PLLSRC_IRC8M_DIV2, RCU_PLL_MUL12);
- rcu_osci_on (RCU_PLL_CK);
- rcu_osci_stab_wait(RCU_PLL_CK);
- rcu_system_clock_source_config (RCU_CKSYSSRC_PLL);
- while(rcu_system_clock_source_get() != RCU_SCSS_PLL);
- }
复制代码
GD32F303:
- void SystemInit(void)
- {
- nvic_vector_table_set(NVIC_VECTTAB_FLASH, 0x2800);
- __enable_irq();
- rcu_deinit();
- rcu_osci_on (RCU_HXTAL);
- rcu_osci_stab_wait(RCU_HXTAL);
- rcu_periph_clock_enable (RCU_PMU);
- pmu_ldo_output_select (PMU_LDOVS_HIGH);
- rcu_ahb_clock_config (RCU_AHB_CKSYS_DIV1);
- rcu_apb1_clock_config (RCU_APB1_CKAHB_DIV2);
- rcu_apb2_clock_config (RCU_APB2_CKAHB_DIV1);
- rcu_pllpresel_config (RCU_PLLPRESRC_HXTAL);
- rcu_predv0_config (RCU_PREDV0_DIV2);
- rcu_pll_config(RCU_PLLSRC_HXTAL_IRC48M, RCU_PLL_MUL15); // 16*12=192M
- rcu_osci_on (RCU_PLL_CK);
- rcu_osci_stab_wait(RCU_PLL_CK);
- pmu_highdriver_mode_enable();
- while(pmu_flag_get(PMU_FLAG_HDRF) == RESET);
- pmu_highdriver_switch_select (PMU_HIGHDR_SWITCH_EN);
- while(pmu_flag_get(PMU_FLAG_HDSRF) == RESET);
- rcu_system_clock_source_config (RCU_CKSYSSRC_PLL);
- while(rcu_system_clock_source_get() != RCU_SCSS_PLL);
- }
复制代码 |
|