STM8S005K6T6C-编程设计
块操作既可以对主程序内存执行,也可以对DATA区执行:•在主程序内存中:块程序对主程序内存的操作必须完全从RAM执行。•DATA区域-具有读写能力的设备:DATA块操作可以从主程序内存执行。然而,数据加载阶段(见下文)必须从RAM执行。-没有读写能力的设备:块程序操作必须完全从RAM执行。有三种可能的块操作:•块编程,也称为标准块编程:在编程之前自动擦除块。•快速块编程:不执行先前的擦除操作。块擦除在进行块编程时,中断会被硬件屏蔽。
标准块编程
标准的块程序操作允许一次编写一个完整的块。在编程之前,块会自动删除。要在标准模式下编程整个块,必须预先设置/清除FLASH_CR2和FLASH_NCR2寄存器中的PRG/NPRG位以启用标准块编程(参见第4.8.2节:Flash控制寄存器2 (FLASH_CR2)和第4.8.2节:Flash控制寄存器2 (FLASH_CR2))。然后,要编程的数据块必须按顺序加载到主程序内存或data区中的目标地址。这将导致所有数据字节被锁住。要开始对整个块进行编程,必须写入所有的数据字节。在编程序列中写入的所有字节必须在同一个块中。这意味着它们必须具有相同的高地址:只有地址的最低有效位可以更改。当目标块的最后一个字节被加载时,编程就会自动开始。它的前面是整个块的自动擦除操作。当在DATA区编程一个块时,应用程序可以在Flash状态寄存器(FLASH_IAPSR)中检查HVOFF位。一旦HVOFF标志被重置,实际的编程阶段就开始了,应用程序就可以返回到主程序内存中。FLASH_IAPSR的EOP和WR_PG_DIS控制标志以及Flash中断可以用来确定操作是否已正确完成。
快速块编程允许在不首先擦除内存内容的情况下编程。因此,快速块编程的速度是标准编程的两倍。这种模式仅适用于已经擦除的编程部分。它对于用完整的应用程序代码编写空白部分非常有用,因为可以显著节省时间。快速块编程通过使用与标准块编程相同的顺序来执行。要启用快速块编程模式,FLASH_CR2和FLASH_NCR2寄存器的FPRG/NFPRG位必须事先设置/清除。HVOFF标志也可以由应用程序轮询,应用程序可以在DATA的实际编程阶段执行其他指令(RWW)。可以检查FLASH_IAPSR寄存器的EOP和WR_PG_DIS位,以确定快速块编程操作是否已正确完成。
注意:在快速块程序运行前,当块不为空时,不保证块中所编写的数据。