CH32F103单片机Flash快速编程移植指南

需积分: 46 49 下载量 123 浏览量 更新于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上的快速移植,充分利用其快速编程的优势。