前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >STM32f407程序移植到GD32F407

STM32f407程序移植到GD32F407

作者头像
ManInRoad
发布于 2021-04-16 03:44:22
发布于 2021-04-16 03:44:22
7.1K00
代码可运行
举报
文章被收录于专栏:物联网思考物联网思考
运行总次数:0
代码可运行

前言:本文记录STM32f407程序移植到GD32F407的全过程,两个芯片是pin to pin,基本特性都是,最大168MHZ,1024k flash,192K sram,LQFP100封装。

1、安装keil对gd32f407的支持包

GigaDevice.GD32F4xx_DFP.2.0.0.pack

2、对u8、u16、u32等数据类型的支持

在gd32f4xx.h中定义

3、时钟选择

根据电路设计,外部使用8M,通过PLL到168M因此在sys_gd32f4xx.c文件中选择宏定义:

(1)选择时钟倍频方式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define __SYSTEM_CLOCK_168M_PLL_8M_HXTAL        (uint32_t)(168000000)

(2)库函数中个别外设的计算中用到了HXTAL_VALUE这个宏,因此需要重新定义,这个宏的取值也是与所选用时钟有关系,这里使用外部8M即HXTAL_VALUE=8000000。

(3)外设时钟使能

使用voidrcu_periph_clock_enable(rcu_periph_enum periph)函数,这里要注意periph的取值每次只能是某一个外设,不能用或的方式,如下:

4、systick时钟

Systick属于cortex m内核的时钟,与stm32用法一样。需要注意系统时钟与最大延时。

5、GPIO外设

Gpio配置为输出与输入略有不同

例如配置某个gpio为输出:

gpio_mode_set(PORT_LED, GPIO_MODE_OUTPUT,GPIO_PUPD_PULLUP, PIN_LED);

gpio_output_options_set(PORT_LED,GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ, PIN_LED);

gpio_bit_set(PORT_LED,PIN_LED);

多了一个gpio_output_options_set的函数,对于输入则不需要这个函数。

6、Timer

这里要主要timer所在的总线,总线不同最大时钟不同,要注意最大时钟。

7、USART、SPI、ADC外设

这些都是从0开始,例如USART0、SPI0、ADC0,对应stm32就USART1、SPI1、ADC1。用法与stm32f407类似。

8、Fsmc

在GD32中叫做EXMC,用法和stm32一样,但是GD32f407的exmc可以驱动sdram,功能上比stm32强大。

这里要注意,引脚复用线与stm32不同,需要查看手册设置为相应的复用线,具体可参见手册《GD32F407xx_Datasheet_Rev2.0.pdf 》61页。

9、flash

在GD32中叫做fmc,gd32f407扇区划分、编程方式和stm32f407一样。

总结,从STM32f407程序移植到GD32F407,只需要更改相应的驱动即可,应用层可以直接使用,GD32的库函数对应stm32是标准库。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 物联网思考 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档