CH32F103单片机Flash快速编程移植指南
需积分: 46 72 浏览量
更新于2024-08-26
3
收藏 269KB DOCX 举报
"CH32F103 FLASH快速编程移植说明"
STM32程序移植到CH32F103单片机涉及到的关键技术点是针对CH32F103特有的快速编程模式进行适配。CH32F103与STM32系列在Flash操作上的差异在于其提供了快速编程模式,这可以显著提高编程速度,尤其是对于频繁更新固件的应用场景来说,这一特性尤其重要。
首先,要在`ch32f10x.h`文件中对`FLASH_TypeDef`结构体进行扩展,添加`MODEKEYR`成员的定义。这个成员在CH32F103的硬件规格中用于快速编程模式的启用和禁用,是移植过程中必不可少的部分。修改`FLASH_Unlock`函数,确保在解锁Flash控制器时正确处理`MODEKEYR`,以便启用快速编程。
接着,考虑到CH32F103的Flash最大容量为64KB,需要在`stm32f10x_flash.h`文件中更新Flash容量的定义。对于不同容量的芯片,可以调整这个数值以适应实际的Flash大小。例如,对于64KB的Flash,可以设置`0x10000`表示一个页的大小。
在`stm32f10x_flash.c`文件中,需要添加Flash寄存器的快速编程位定义。这些定义如`CR_PAGE_PG`, `CR_PAGE_ER`, `CR_BUF_LOAD`, 和 `CR_BUF_RST`分别用于启动Page编程、Page擦除、缓冲区加载和缓冲区复位操作。这些位在执行Flash操作时会被设置或清除,以控制Flash控制器的行为。
在移植过程中,还需要修改`FLASH_ErasePage()`函数以支持快速编程。函数的修改包括检查Page地址是否在有效范围内,设置`CR_PAGE_ER`标志启动页擦除,设置`AR`寄存器指向要擦除的页地址,然后启动操作(`CR_STRT_Set`)。在等待`SR_BSY`(忙碌状态)标志清零后,清除`CR_PAGE_ER`标志,确保操作完成。最后,通过写入特定地址来执行快速编程操作。
在移植过程中,开发者还应当注意处理可能出现的错误状态,如`SR_PGERR`(编程错误)和`SR_WRPRTERR`(写保护错误),以及确认`SR_EOP`(操作结束)标志。这些状态检查可以确保程序在遇到异常情况时能够适当响应。
从STM32向CH32F103移植Flash编程功能时,关键步骤包括修改头文件以包含CH32F103的特定定义,更新Flash操作函数以支持快速编程模式,并处理可能的错误状态。通过这些修改,可以实现原有STM32工程在CH32F103上的快速移植,充分利用其快速编程的优势。
2021-09-29 上传
冒险家KL
- 粉丝: 221
- 资源: 9
最新资源
- 正整数数组验证库:确保值符合正整数规则
- 系统移植工具集:镜像、工具链及其他必备软件包
- 掌握JavaScript加密技术:客户端加密核心要点
- AWS环境下Java应用的构建与优化指南
- Grav插件动态调整上传图像大小提高性能
- InversifyJS示例应用:演示OOP与依赖注入
- Laravel与Workerman构建PHP WebSocket即时通讯解决方案
- 前端开发利器:SPRjs快速粘合JavaScript文件脚本
- Windows平台RNNoise演示及编译方法说明
- GitHub Action实现站点自动化部署到网格环境
- Delphi实现磁盘容量检测与柱状图展示
- 亲测可用的简易微信抽奖小程序源码分享
- 如何利用JD抢单助手提升秒杀成功率
- 快速部署WordPress:使用Docker和generator-docker-wordpress
- 探索多功能计算器:日志记录与数据转换能力
- WearableSensing: 使用Java连接Zephyr Bioharness数据到服务器