GD32 Flash操作优化与USB时钟要求解析
需积分: 5 80 浏览量
更新于2024-08-06
收藏 198KB PDF 举报
本文档主要介绍了关于GD32国产芯片在Flash操作和USB配置方面的注意事项,以及软件移植过程中需关注的系统层面的修改。
在Flash操作方面,GD32的Flash执行速度快,但写操作较慢。为了优化性能,需要对以下几个函数进行修改:
1. `FLASH_EraseOptionBytes(void)`:用于擦除选项字节。
2. `FLASH_ProgramOptionByteData(uint32_t Address, uint8_t Data)`:用于编程选项字节数据。
3. `FLASH_EnableWriteProtection(uint32_t FLASH_Pages)`:启用Flash页面写保护。
4. `FLASH_ReadOutProtection(FunctionalState NewState)`:设置读出保护状态。
在这些函数执行关键操作(如写入KEY)后,需要添加`__nop()`指令或等待OPTWRE标志变为0的循环,以确保足够的等待时间。同时,需要调整擦除和编程的超时宏定义,增大它们的值以适应更长的等待时间。
对于Flash的起始地址,写操作必须从0x08000000开始,而读操作可以从0x00000000开始读取主Flash。若芯片容量大于256K,高速度区域的Flash操作会变慢,需要手动调整链接脚本,将速度敏感的部分放在256K之前。
在USB配置上,GD32有最小工作频率要求,即APB1分频后的时钟必须大于12MHz。例如,如果HCLK为56MHz,APB1的最大分频系数为4,则最小工作频率为14MHz。软件编程时应确保设置的USB时钟大于12MHz。
在软件移植时,需要注意以下几点:
1. HSE相关内容的修改:GD32与STM32的晶振启动时间不同,需要在对应的宏定义中调整HSE_STARTUP_TIMEOUT,以适应GD32的晶振参数,确保正常启动。
2. 代码执行速度:GD32的代码执行速度比STM32快,可能导致原有基于STM32的延时函数在GD32上运行时间缩短。因此,如果应用中有精确延时需求,需要重新计算或调整相关函数。
例如,一个简单的延时函数在GD32上执行时间可能比STM32短约25%。此外,如果应用中存在依赖于执行速度的判断逻辑,如模拟I2C的应答检测,也可能因为执行速度差异而在GD32上出现问题,需要进行代码优化。
GD32芯片在Flash管理和USB配置上有特定的需求,并且其代码执行速度的提升对软件移植提出了新的挑战。开发者需要根据这些特性对原有代码进行适应性修改,以确保在GD32平台上稳定运行。
117 浏览量
2022-09-20 上传
2022-09-24 上传
2011-07-28 上传
点击了解资源详情
2011-08-15 上传
2018-11-28 上传
2021-03-09 上传
2020-01-11 上传
思索bike
- 粉丝: 38
- 资源: 3962
最新资源
- Raspberry Pi OpenCL驱动程序安装与QEMU仿真指南
- Apache RocketMQ Go客户端:全面支持与消息处理功能
- WStage平台:无线传感器网络阶段数据交互技术
- 基于Java SpringBoot和微信小程序的ssm智能仓储系统开发
- CorrectMe项目:自动更正与建议API的开发与应用
- IdeaBiz请求处理程序JAVA:自动化API调用与令牌管理
- 墨西哥面包店研讨会:介绍关键业绩指标(KPI)与评估标准
- 2014年Android音乐播放器源码学习分享
- CleverRecyclerView扩展库:滑动效果与特性增强
- 利用Python和SURF特征识别斑点猫图像
- Wurpr开源PHP MySQL包装器:安全易用且高效
- Scratch少儿编程:Kanon妹系闹钟音效素材包
- 食品分享社交应用的开发教程与功能介绍
- Cookies by lfj.io: 浏览数据智能管理与同步工具
- 掌握SSH框架与SpringMVC Hibernate集成教程
- C语言实现FFT算法及互相关性能优化指南