google随便一搜都有啊... 你自己搜一下试试
1. stm32f10x.h里的HSE_STARTUP_TIMEOUT, 默认是0x500, 改成0xffff, GD32的HSE稳定慢一点
2. system_stm32f10x.c, 模仿它的写法增加一个SYSCLK_FREQ_108MHz, 以及增加一个SetSysClockTo108函数. 如果还当72MHz的用, 这里不改也行.
改108M的话还稍微有点麻烦, 要看gd32的reference manual, 它的倍频可以到32倍, 一般把8M晶振先二分频, 再27倍频.
但是gd32全系列的晶振预分频器都只支持二分频, 如果晶振用16M的话就没法倍频到108M了, 得降到104M或96M.
3. USB分频增加了2分频和2.5分频, 如果要用USB, 主频应该设置到96M, USB 2分频, 或者超频到120M, USB 2.5分频.
【 在 HxSailor () 的大作中提到: 】
求指导书链接。我说要改要改说了两年了,还没下狠心去弄。
【 在 tom6bj 的大作中提到: 】
: 兼容f103那些, hex文件基本能通用, 不过有些小问题, 官方有说明, 照着改改就行
: 不过性价比高的基本都是自己的系列了
: 用stlink没问题, 我都是用stlink
: ...................
--
FROM 101.41.186.*
不过我也不用标准库提供的system_stm32f10x.c
一般都是自己写SystemInit函数
用GD32的库的话, 类似这样, 这是把GD32FFPRTGU6超频到280M的配置
void SystemInit(void)
{
nvic_vector_table_set(NVIC_VECTTAB_FLASH, 0x000);
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_apb2_clock_config(RCU_APB2_CKAHB_DIV2);
rcu_apb1_clock_config(RCU_APB1_CKAHB_DIV4);
rcu_pllpresel_config(RCU_PLLPRESRC_HXTAL);
rcu_predv0_config(RCU_PREDV0_DIV2);
rcu_pll_config(RCU_PLLSRC_HXTAL_IRC48M, RCU_PLL_MUL35); // 16M/2*35=280M
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);
__enable_irq();
}
【 在 tom6bj (tom) 的大作中提到: 】
: google随便一搜都有啊... 你自己搜一下试试
: 1. stm32f10x.h里的HSE_STARTUP_TIMEOUT, 默认是0x500, 改成0xffff, GD32的HSE稳定慢一点
: 2. system_stm32f10x.c, 模仿它的写法增加一个SYSCLK_FREQ_108MHz, 以及增加一个SetSysClockTo108函数. 如果还当72MHz的用, 这里不改也行.
: ...................
--
FROM 101.41.186.*