GD32是国产兆易创新公司生产的完全兼容STM32系列的Cortex-M3处理器,具有几大亮点:
1,高主频108MHz。性能提升30%以上,可超频到120MHz
2,Flash零等待。STM32的72MHz需要两个等待,其实兆易创新公司本来就是做Flash起家的,具有gFlash专利
3,采用ARM Cortex-M3新内核R2p1。STM32采用R1p1,带有一些缺陷
4,性价比高。GD32比对应的STM32芯片一般便宜20%,某些芯片便宜30%以上
收到样片GD32F103VET6后,替换STM32F103VET6,写入最新版本TinyBooter和MF固件,以及MF测试例程,全部一次性通过!
兼容性非常好。
不过我们不能满足于此,MF固件默认跑在72MHz主频,Flash还是使用两个等待,我们需要测试更高速度!
于是根据官方的资料,修改主频为108MHz,Flash为零等待。
RCC->CFGR |= (uint32_t)(0x08000000 | RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLXTPRE_HSE_Div2 | RCC_CFGR_PLLMULL12); |
修改以后发现USB无法识别,串口一团糟!
上面是网上能找到的最多的资料,意思是HSE/2*(12+15),除以2和12都可以理解,15哪里冒出来的就实在不懂了。
请求官方技术支持,几分钟后得到邮件回复。
大意是108MHz无法分频得到USB所需要的48MHz,STM32本来支持1分频和1.5分配,然后GD32在这方面扩展了2分频和2.5分配。所以,如果想要使用USB,要么降频到96MHz,要么超频到120MHz,这样分别使用2分频和2.5分配即可得到USB所需要的48MHz。
这就说明GD32无法在标准108MHz下使用USB,好杯具!!!
另外,关于串口乱码的问题,给我的答复是修改RCC_GetClocksFreq函数:
void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks)
{
uint32_t tmp = 0, pllmull = 0, pllsource = 0, presc = 0; /* Get SYSCLK source -------------------------------------------------------*/ tmp = RCC->