GD32 F4系列程序移植到 GD32 F3系列的注意点

1、关于汇编启动文件的选择:

我们使用的芯片是 GD32F303RGT6 ,根据《GD32F303xx_Datasheet_Rev1.4.pdf》,可以得知该芯片的FLASH的大小是1024KB ,即1M.
根据 GD32 中文手册描述,
GD32F303XX FLASH 大小在256K~512K 属于高密度产品(GD32F30X_HD)
GD32F303XX FLASH 大于512K 属于超高密度产品(GD32F30X_XD)
而 GD32F305xx 和GD32F307xx 属于互联性产品(GD32F30X_CL)
所以,我们选择的汇编启动文件应该是:startup_gd32f30x_xd.s

根据不同的产品属性,选择不同后缀的汇编引导文件

2、工程设置中添加宏的问题

在工程设置中添加下面两个宏
USE_STDPERIPH_DRIVER,GD32F30X_XD
实际测试的时候,发现没有添加这两个宏,也能编译通过,调试的时候也可以调试 。
且调试的时候,默认就进入了 GD32F30X_XD 宏控条件中
难道是keil5做的这么先进了吗?可以根据芯片自动开启这个宏?可是gd32f30x.h中明明是要求开启对应的宏的。
不管怎样,为了安全,手动在工程配置中开启这两个宏。

3、添加静态库的问题

加载 .a 库文件的时候,编译会报错:
xx.a(1): error: A1167E: Invalid line start

需要在工程中点击选中该文件,然后右击,选择"options for files",在配置选项中配置该静态库的"File Type"
为"Library file ",即可解决该编译问题。一般默认情况下,.lib后缀名的文件,没有该问题。

也就是说,keil5 默认只认识.lib 为后缀名的静态库文件,如果是其他后缀面的静态库文件,需要强制性的手动指定这个文件为库文件

4、GD32 SPI主频的问题

GD32F303 SPI0 在APB2上,最高主频是120MH
SPI1和SPI2在APB1 上,最高主频是60MHZ

所以这里需要设置合适的分频系数。

5、关于函数无参的警告

移植时,出现没有参数的函数,需要在参数里填充void,避免"Deprecated declaration"的警告

这也是一个好的编程习惯。无参时,参数就是void

6、GPIO的函数接口gpio_init() 与GPIO_Init()

GD32 F3 GPIO接口中提供了两个接口,gpio_deinit() 以及 gpio_init()
尤其是gpio_init() ,这个函数直接可以配置GPIO口具体的某个管脚,配置它为输入还是输出还是AF模式,
还可以配置管脚的速度 。非常好用。
GD32F4 中只提供了 gpio_deinit()接口,没有提供 gpio_init()接口,而是提供了GPIO_Init()接口
GPIO_Init()这个接口在配置过程中,需要手动配置PIN脚的AF模式,这是非常麻烦的。
很奇怪F4系列为什么没有保留F3系列的这个接口?(两个团队开发的接口??)

7、关于中断的时钟

GD32F4 在配置中断的时候,除了要配置管脚的端口时钟,通常还需要配置RCU_SYSCFG 系统时钟
因为中断一般会使用到系统时钟
GD32F3系列里面,没有RCU_SYSCFG 系统时钟,配置中断的时候,需要额外配置RCU_AF时钟

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sgmcy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值