对比STM32和GD32标准库的区别

外设关注+星标公众,不错过精彩内容

作者 | strongerHuang

微信公众号 | 嵌入式专栏

前几年因为缺芯涨价的原因,很多人开始寻找STM32替代品,首先被大家盯住的就是GD32,原因很简单,GD32和STM32有很多“相似之处”。

相信有不少老铁都用过STM32和GD32,选择STM32替代品的时候,主要考虑的就是软、硬件兼容性的问题。

今天为大家对比一下STM32和GD32标准库的内容,本文以STM32F10x_StdPeriph_Lib、GD32F10x_Firmware_Library为例进行讲解。

外设库下载

我们以【STM32F10x_StdPeriph_Lib】和【GD32F10x_Firmware_Library】外设库为例。他俩虽然字面意思不一样,一个【标准外设库】一个【固件库】,但他俩就是“同一类”东西。

STM32F10x_StdPeriph_Lib、GD32F10x_Firmware_Library官方都提供下载地址(直接去搜索都能找到)。

STM32F10x_StdPeriph_Lib下载地址:

https://www.st.com/zh/embedded-software/stsw-stm32054.html

GD32F10x_Firmware_Library下载地址:

http://www.gd32mcu.com/cn/download/8?kw=GD32F1

额外说两点:

STM32的标准外设库,目前只有较早的系列有,这后面新推出的芯片(比如:STM32G、U系列没有标准外设库)只有HAL和LL库了。

标准外设库只有这几个系列:

GD32是以GD32F10x_Demo_Suites这种套件形式提供,套件包含了几类文件:

对比固件库(源码)

正式进入正题,对比STM32和GD32的固件库(标准外设库)。

1.对标文件夹

图中两个文件夹几乎是一一对应的内容,GD32把USB的驱动库文件整理在一起了,STM32对应的USB驱动库是和其他系列整理在一起的,地址:

https://www.st.com/zh/embedded-software/stsw-stm32121.html

源文件和头文件也是一一对应,只是文件(夹)名不一样

2.xx32f10x.h源代码对比

a.文件头描述

b.宏定义描述

c.中断向量表

d.地址定义

STM32和GD32基地址偏移地址使用方式有所不同,先看下定义:

e.外设相关宏定义

STM32外设相关宏定义更多是在stm32f10x.h文件:

而GD32更多是定义在外设对应的头文件(这里以ADC为例):

3.system_xx32f10x.c源代码对比

a.主频

GD32一个特点就是,具有更高的主频(系统时钟108M):

b.系统时钟申明和定义


c.系统初始化

4.startup_xx32f10x_hd.s启动源代码对比

这里以hd型号为例:

a.堆栈分配

GD32分配的空间比较多:

b.其他差不多

启动文件,对比一下,你会发现,其实大同小异。

5.外设源代码对比

这里以ADC为例(xx32f10x_adc.c):

a.STM32更多mask宏定义

b.一个用if else,一个用case

c.STM32有更多断言assert(参数检查):


d.函数、变量命名方式

一个大写开通,一个小写,用下划线分开:

void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime)void adc_regular_channel_config(uint32_t adc_periph, uint8_t rank, uint8_t adc_channel, uint32_t sample_time)

其他很多内容都具有相似之处,只是大同小异。

最后

上面对比了各种类型的固件库(源代码),你会发现一个什么问题?

能看懂其中一个固件库(源码),再去看另一个,是不是一点都不费力。它们几乎都差不多,可以拿“双胞胎”来形容。

因为基地址几乎一样(上面源码对比有提到),所以,它们的软件兼容性很好,甚至在一定情况下,可以做到“无缝替换”。

------------ END ------------


●专栏《嵌入式工具

●专栏《嵌入式开发》

●专栏《Keil教程》

●嵌入式专栏精选教程

关注公众号回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。

点击“阅读原文”查看更多分享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值