GD32移植与STM32差异分析:ADC与定时器配置详解
需积分: 5 200 浏览量
更新于2024-08-06
收藏 198KB PDF 举报
"ADC方面的说明-射频识别 iso-iec_cd-18000-6c中文版详细简析"
本文主要讨论了在使用GD32国产芯片时遇到的一些技术问题,特别是关于定时器配置和ADC输入通道的设置,同时也提到了软件移植时需要注意的系统层面的事项。
在定时器方面,客户在使用GD32的MCU时遇到了一个问题,即定时器在正交编码或输入捕获模式下无法正常工作,而同样的程序在ST的MCU上却能顺利运行。问题的根源在于客户在编程时未配置定时器的周期,而ST的定时器在未配置周期时会有一个默认值,GD32则没有。解决办法是在程序中明确设置定时器的周期,例如:
```c
TIM_TimeBaseStructure.TIM_Period = 0xffff;
TIM_TimeBaseStructure.TIM_Prescaler = 0;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIMx, &TIM_TimeBaseStructure);
```
在ADC部分,当使用GD32的MCU时,必须确保ADC输入通道被配置为模拟输入模式GPIO_Mode_AIN。如果配置为其他模式,ADC将无法正常工作。这意味着在初始化ADC通道时,必须指定正确的输入模式,以保证ADC的正确采样和转换。
在软件移植注意事项中,有以下两个关键点:
1. HSE相关内容的修改:GD32与STM32在HSE启动时间宏定义上有所不同。在GD32中,HSE_STARTUP_TIMEOUT宏定义应该更改为0xFFFF以适应其特定的晶振电路设计。尽管在某些情况下不修改也能运行,但为了保证系统的稳定性和兼容性,建议进行修改。
2. 代码执行速度的差异:由于GD32采用了专利技术,其代码执行速度相比ST更快。因此,包含循环延迟的代码在GD32上执行时间会缩短,可能导致原有基于ST的延时函数在GD32上不再准确。例如,一个简单的for循环延迟函数在GD32上的执行时间会比ST短。因此,如果应用对时间精度有较高要求,需要根据实际情况调整代码,确保延时的准确性。
此外,文章还提到了一个关于IO模拟I2C的示例,客户在GD32上遇到的问题是,原本在ST上正常工作的I2C应答检测函数在GD32上出现异常。这可能是由于GD32的代码执行速度更快,导致判断条件的执行时间不同,从而影响了功能的正确性。这也提醒我们在移植代码时,需要对时间敏感的逻辑进行仔细检查和调整。
针对GD32芯片进行开发时,需要注意定时器的配置、ADC输入通道的设置以及软件移植过程中可能出现的系统差异和代码执行速度问题,以确保程序的正确性和稳定性。
2021-10-26 上传
2023-11-28 上传
2021-09-30 上传
2023-06-10 上传
2024-03-31 上传
2022-07-13 上传
2022-07-15 上传
2023-11-28 上传
2022-07-14 上传
刘兮
- 粉丝: 26
- 资源: 3846
最新资源
- JHU荣誉单变量微积分课程教案介绍
- Naruto爱好者必备CLI测试应用
- Android应用显示Ignaz-Taschner-Gymnasium取消课程概览
- ASP学生信息档案管理系统毕业设计及完整源码
- Java商城源码解析:酒店管理系统快速开发指南
- 构建可解析文本框:.NET 3.5中实现文本解析与验证
- Java语言打造任天堂红白机模拟器—nes4j解析
- 基于Hadoop和Hive的网络流量分析工具介绍
- Unity实现帝国象棋:从游戏到复刻
- WordPress文档嵌入插件:无需浏览器插件即可上传和显示文档
- Android开源项目精选:优秀项目篇
- 黑色设计商务酷站模板 - 网站构建新选择
- Rollup插件去除JS文件横幅:横扫许可证头
- AngularDart中Hammock服务的使用与REST API集成
- 开源AVR编程器:高效、低成本的微控制器编程解决方案
- Anya Keller 图片组合的开发部署记录