吐槽一下GigaDevice的固件库

[复制链接]
4941|13
 楼主| imdx 发表于 2017-12-21 20:36 | 显示全部楼层 |阅读模式
目前我在一款产品上同时用GD32F130和GD32F330,因此同时使用两个版本的固件库。原本产品使用GD32F130基于V2.0.0的固件库编写的,固件库风格与STM32的库相同,变量和函数的命名方式相同,绝大多数API也都一样,用着挺好。
后来由于某些原因,器件更换成了GD32F330,固件库版本V1.0.0,该固件库版本变化很大,变量和函数命名方式都变了,函数命名全小写加下划线,大量使用宏来定义寄存器地址(作者应该比较熟悉linux内核代码)。可能大量的宏对性能和代码尺寸有一些好处,但是带来的代码可读性不高的缺点很明显,相比之下我还是更喜欢STM32那种风格的固件库。
基于GD32F330 固件库V1.0.0将代码移植好,然后发现无法与GD32F130的V2.0.0固件库兼容,很多API接口都不一样,而且发现GD32F130 V3.0.0的库风格和GD32F330的V1.0.0固件库风格一样了,回头又将GD32F130的软件移植到V3.0.0的库,两个器件的代码基本上相同了。
使用中发现GD32F130 V3.0.0固件库和GD32F330 V1.0.0固件库虽然大部分API相同,但是仍然存在一些API有细微的差异,会给使用者带来很大的困扰。
比如ADC的API里面这个函数
void adc_regular_channel_config(uint8_t rank, uint8_t channel, uint32_t sample_time)

在gd32f3x0的V1.0.0库里面,rank范围是0-15,而在gd32f1x0的V3.0.0库里面,rank范围就是1-16,就是差一个下标而已,代码移植的过程中遇到问题查起来很困难,你说坑爹不坑爹?


评论

在最新的gd32f1x0的V3.1.0库里面,adc_regular_channel_config函数的rank范围就是0-15了,和gd32f3x0 V1.0.0库保持一致。  发表于 2018-3-23 07:44
mystery11 发表于 2017-12-22 18:05 | 显示全部楼层
我也想吐槽
Kelan 发表于 2017-12-22 21:31 | 显示全部楼层


为何我在GD官网上没有找到 GD32F130系列的  Firmware Library? 不管是楼主所说的 V2.0.0还是 V3.0。


其它系列的 Firmware Library, 官网上倒是有。






wangguanfu 发表于 2018-1-25 01:15 来自手机 | 显示全部楼层
非常坑
lvben5d 发表于 2018-1-25 14:36 | 显示全部楼层
还好 130的  V3.0.0的库跟105的V2.0.0的基本函数命名统一了。现在PDF文件里 描述 那个外设的索引 还没修改好。 现在的USART0 开始了。
hp4700 发表于 2018-1-25 21:39 | 显示全部楼层
GD130的库改为3.0后,和数据手册上的很多寄存器名称对不上,出了问题很难查找,费时费力!!!严重影响项目进度!!!GD的人真是脑瓜子进水了!!!!资料不完整向外发布干嘛????我很想骂人!!!!
wztoad 发表于 2018-1-29 21:38 | 显示全部楼层
GD103 v1.0  和GD130 v2.0比较好用,跟st也兼容好点。不要盲目升级库,就象st 升的hal库一样,不习惯
oiuetjg 发表于 2018-1-29 21:47 | 显示全部楼层
3.0想走自己的路,走出一点特点
desertsailor 发表于 2018-2-1 18:51 | 显示全部楼层
外设的编号真的是奇葩,手册上从1开始编号,对应固件库却从0开始编号,非常不方便。
tongbu2015 发表于 2018-2-21 11:41 | 显示全部楼层
固件库的还是需要多参考下其他的
FAQ 发表于 2018-4-27 20:30 | 显示全部楼层
相当坑人啊
wztoad 发表于 2018-4-28 09:49 | 显示全部楼层
一直用2.0,3.0有点坑,请教一下GD32F130基于V2.0.0的固件库能用有gd32f330上吗?
ayb_ice 发表于 2018-4-28 13:27 | 显示全部楼层
这个是没有办法的
ST的库也不一样了
我用STM32F407,用的最新库,与之前也不一样,网上一搜,全是老版本的,
痛苦一下就好了
其实无所谓了,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

122

主题

904

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部