1/3
2/3
3/3
用CubeMX玩转国产GD32F303
_super1207
编辑于 2023年11月28日 06:53
收录于文集
共2篇

通过阅读本文, 您将了解到:

1:GD32F303的主要特色以及类似的STM32的价格对比

2:如何用cubemx创建gd32f303的工程

3:如何使用120Mhz的主频

4:如何开启32位硬件浮点(Keil中开启FPU)

一:GD32F303的主要特色以及类似的STM32的对比

    我手里芯片为GD32F303RCT6,有256kb的Flash容量,主频可达120Mhz,cortex-m4架构,淘宝上,单片零售价格在4~6元之间。

    STM32F103RCT6,有256kb的Flash容量,主频可达72Mhz,cortex-m3架构,淘宝上,单片零售价格也在4~6元之间。注:STM32F103RCT6与GD32F303RCT6引脚功能兼容,外设寄存器兼容。

    STM32F303RCT6,有256kb的Flash容量,主频可达72Mhz,cortex-m4架构,淘宝上,单片零售价格在15~20元之间。注:STM32F103RCT6与GD32F303RCT6引脚功能兼容,外设寄存器兼容。

    GD32F303远优于STM32F103,和STM32F303RCT6不相上下,但是因为GD主频更高,所以代码实际运行的更快些。另外,GD的功耗高于STM。

二:如何用cubemx创建gd32f303的工程

    前文说到,STM32F103RCT6与GD32F303RCT6引脚功能兼容,外设寄存器兼容,所以,你直接创建STM32F103RCT6的工程即可,甚至你的ST-Link,CubeMonitor之类的玩意儿,都可以直接用。

三:如何使用120Mhz的主频

官方手册:

时钟配置

您配吧,亲~

四:如何开启32位硬件浮点(Keil中开启FPU)

        GD32F303RCT6是cortex-m4的架构,但是STM32F103RCT6是cortex-m3,m3的架构是没有fpu的。

    玩过armcc的你应该知道,开启硬件浮点,需要如下条件:

            条件1:编译参数里面,带上-mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard

            条件2:置位CPACR寄存器(0xE000ED88)的第20~23这4个比特位(CP10、CP11)

            条件3:过编译

     先说条件1:非常好达成,如果你用keil,你把随便改个cortex-m4架构的芯片,比如STM32F303RCT6,然后在target里面启用Floating Point Hardware:Single Precesion

    再说条件2:非常好达成,你直接在入口函数加入

(*(volatile uint32_t *)(0xE000ED88)) |= (15 << 20);

见图:

开启fpu

    再说条件3:你一编译,会报一个错,大概是一个宏判断过不去,直接注释掉即可,如图:

强行过编译

测试一下吧,我随便写了点UB:

测试

看到这个VMUL.F32了吗,这就是速度的象征!