STM32F05X移植GD32F1X0注意事项
1、 安装GD_MDK补丁到MDK的安装目录下
2、 FLASH算法文件在“GD32F10xxx Keil IDE Config”文件夹中,算法文件需要复拷贝到“ D:\Keil\ARM\Flash ”中;
3、 选择算法文件(xxx.FLM)
For GD32F10xx4,GD32F10xx6,GD32F10xX8,GD32F10xxB, Please select GD32F10xx468B.FLM as Flash programming algorithm.
For GD32F10xxC,GD32F10xxD,GD32F10xxE,GD32F10xxF,GD32F10xxG, Please select GD32F10xxCDEFGIK.FLM as Flash programming algorithm.
For GD32F10xxI,GD32F10xxK, Pls select the relevant P/N of "32F10xxG" firstly and then select GD32F10xxCDEFGIK.FLM as Flash programming algorithm.
For GD32F1x0x4,GD32F1x0x6,GD32F1x0x8 value line series of MCU, Please select the relevant P/N of "32F103xx" firstly and then selectGD32F1x0468.FLM as Flash programming algorithm.
4、 使用GD 150的demo程序中的外设库替换F030工程中的外设固件,同时替换掉F030工程中的启动文件,并正确选择GD32驱动芯片类型
5、 修改中断向量设置,因为GD使用的是M3内核所以中断分成抢占优先级和子优先级,程序中需要进行中断分组和中断向量的重新配置,程序中的几个中断向量都需要调整。
6、 GD的内核是M3的,有两条APB总线所以比ST要多配置一条APB总线,ADC外设使用M3内核的用法,所以ADC的函数使用与参数传送不同于M0,参考M3内核ADC使用方法。需要正确配置系统时钟,以及APB1和APB2时钟,否则时钟会不正常。
7、 HSE相关内容修改
在V3.x的库,启动时间宏定义在xxx32f10x.h头文件中;
在V3.0以前的库,其启动时间宏定义在xxx32f10x_rcc.c中( HSEStartUp_TimeOut) ;
修改前:
//#define HSE_STARTUP_TIMEOUT ((uint16_t)0x0500)
修改后:
#define HSE_STARTUP_TIMEOUT ((uint16_t)0xFFFF)
修改原因:
GD和STM32的晶振部分电路设计有一定的差异,两者对外部高速晶振的参数要求也不一样,
修改HSE_STARTUP_TIMEOUT宏定义可以保证晶振正常起振。当然你会在应用中发现有一些应用
不修改也能照常跑,这是由于晶振的参数差异造成了,为了保证程序的正常运行还是修改该宏定义。
8、 代码执行速度方面的修改
GD32采用专利技术, 提高了相同工作频率下的代码执行速度,带来了高性能的使用体验。这样一些
在ST下面编写的程序如While或者是For循环的延时,移植到GD上面来肯定相应的延时会变短。所以
如果客户的应用有用到这种延时方法的得根据实际情况进行一定的调整。 GD的代码执行速度比ST
更快,那么在客户的应用中如果有一些判断的结构不够严谨也可能会导致问题。
9、 BOOT管脚注意事项
BOOT0及BOOT1管脚在芯片复位时的电平状态决定了复位后从哪个区域开始执行程序。典型情况下, BOOT0需外接10K下拉电阻,就可
以从Flash启动。如BOOT0悬空,则不能从Flash启动。
10、 由于GD32芯片不够完全成熟,有些外设有需要注意的细节问题,请参考《GD32F103X-移植指南》
11、 使用GD-LINK烧录时,不需要给芯片另外供电。
12、 不能使用ST-LINK官方上位机烧录,但可使用ST-LINK、JLINK等烧录工具
|