又测试了一下GD32F405RGT6
和之前测试的GD32F450ZET6一样, 标称168M但是可以超频到400M.dhrystone 2.1, 168M时219DMIPS, 超400M时522DMIPS. 更新: 焊了两块板, 其中一块能跑到410M,420M不启动. 另一块只能380M, 390M不启动. 估计是个体差异~ 为什么GD的芯片,比ST的还贵 以前在大学时,用有源晶振,把stc的52超到了48M,还很稳定 我的出现一个问题,就是PLL总是不能通过....哎,暂时没办法了.... f405是tmsc生产,可能超频能力强些,但不保证稳定性的 sy8501 发表于 2023-11-29 23:59
为什么GD的芯片,比ST的还贵
(引用自3楼)
怎么可能? 具体啥型号? 我在youxin买的GD32F405RGT6, 才13元多 sy8501 发表于 2023-11-29 23:59
为什么GD的芯片,比ST的还贵
(引用自3楼)
GD在商城有价格保护之类的措施, 有可能是这个原因导致价格高 本帖最后由 三年模拟 于 2023-12-6 10:08 编辑
有一款产品用了,gd,有极低概率外置晶振无法启动,程序死在main函数前,但是st的从来没遇到过,确认过了不是焊接问题,晶振反复焊接解决不了 三年模拟 发表于 2023-12-6 10:06
有一款产品用了,gd,有极低概率外置晶振无法启动,程序死在main函数前,但是st的从来没遇到过,确认过了不 ...
(引用自9楼)
gd的哪个型号?印象中st的f103系列是有rtc不起振的问题。 三年模拟 发表于 2023-12-6 10:06
有一款产品用了,gd,有极低概率外置晶振无法启动,程序死在main函数前,但是st的从来没遇到过,确认过了不 ...
(引用自9楼)
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);
}
三年模拟 发表于 2023-12-6 10:06
有一款产品用了,gd,有极低概率外置晶振无法启动,程序死在main函数前,但是st的从来没遇到过,确认过了不 ...
(引用自9楼)
晶振启动timeout改了吗? gd需要把等待时间加长 tomzbj 发表于 2023-12-6 10:39
GD哪款? 如果照抄ST的SystemInit函数有几个地方要改一下, GD官方有说明.
不过最好是用gd自家的库, System ...
(引用自11楼)
请教,使能IRQ中断为啥要放在前面? akey3000 发表于 2023-12-6 10:10
gd的哪个型号?印象中st的f103系列是有rtc不起振的问题。
(引用自10楼)
低频无源晶振吧?晶振也是有离散性差异的。 GD的405系列AD也是跟STM32F4一样有bug吗? 陆小凤之北京 发表于 2023-12-6 11:00
低频无源晶振吧?晶振也是有离散性差异的。
(引用自14楼)
yxc的8M晶振,感觉实gd的良率没有st高 陆小凤之北京 发表于 2023-12-6 10:57
请教,使能IRQ中断为啥要放在前面?
(引用自13楼)
无所谓吧, 放后面也行.
页:
[1]