GD32与STM32移植:晶振设置与代码执行速度差异分析

需积分: 5 11 下载量 117 浏览量 更新于2024-08-06 收藏 198KB PDF 举报
"本文主要介绍了在系统移植过程中,特别是从STM32到GD32国产芯片移植时需要注意的事项,包括HSE启动时间宏定义的修改以及代码执行速度的差异。文章提供了两个实际案例来说明这些问题可能带来的影响,并强调了在不同平台间移植代码时需对延时和性能进行调整的重要性。" 在系统移植过程中,尤其是从STM32迁移到GD32国产芯片时,有两个关键的方面需要特别关注。首先,关于HSE启动时间宏定义的修改,原文指出,V3.x版本的库将HSE_STARTUP_TIMEOUT宏定义放在了xxx32f10x.h头文件中,而在V3.0之前的库中,这个宏定义位于xxx32f10x_rcc.c中的HSEStartUp_TimeOut。在STM32与GD32之间,由于晶振电路设计和参数要求的不同,原始的HSE_STARTUP_TIMEOUT值可能不适用于GD32。因此,将宏定义修改为0xFFFF可以确保外部高速晶振(HSE)正常启动。虽然有些情况下不修改也能运行,但为了保证程序的稳定性和可靠性,建议始终进行此修改。 其次,GD32芯片采用了专利技术,提升了相同工作频率下的代码执行效率。这意味着从STM32移植过来的代码,如包含While或For循环的延时函数,其执行速度在GD32上会显著缩短。这可能导致原有的延时计算不再准确。举例来说,一个简单的延时函数在STM32上执行时间为7.4us,在GD32上则缩短至5.4us。对于那些对时间精度有严格要求的应用,必须考虑这一差异并调整相关参数。 此外,文章提供了一个实际案例,展示了当使用IO模拟I2C通信时,查应答函数在STM32和GD32上的不同表现。在STM32上执行正常的代码,在GD32上可能出现问题,这可能源于GD32的快速执行速度导致的判断条件执行过快。因此,在进行系统移植时,需要仔细检查和优化这类时间敏感的代码,确保它们在新平台上能够正确运行。 从STM32向GD32移植代码时,开发者需要考虑HSE启动时间的适配和代码执行速度的差异,这直接影响到系统的稳定性和应用程序的性能。进行移植时,不仅要关注硬件层面的差异,还要充分理解新平台的特性和性能优势,以便对软件进行相应的优化和调整。