注意事项 为正确操作 FLASH 和提高 FLASH 的访问效率及使用寿命,用户在编程应用时需要注意以下事项:
• 地址对齐要求地址边界对齐,即使用 16bit 位宽访问 FLASH 时的地址必须是偶地址,使用 32bit 位宽时的地址必须是 4 的倍数地址。
正确地址对齐的代码示例:
8bit 读取:tempdata = *( ( uint8_t * ) 0x0000 0001 ) ;
16bit 读取:tempdata = *( ( uint16_t * ) 0x0000 0002 ) ;
32bit 读取:tempdata = *( ( uint32_t * ) 0x0000 0004 ) ;
错误地址对齐的代码示例:
16bit 读取:tempdata = *( ( uint16_t * ) 0x0000 0001 ) ;
32bit 读取:tempdata = *( ( uint32_t * ) 0x0000 0003 ) ;
• 操作完成标志查询当 CPU 从 FLASH 中取指并运行时,如果执行对 FLASH 的页擦除 / 写操作,CPU 会自动停止下一条指令存取,硬件自动等待擦写操作完成(FLASH_CR1.BUSY 状态位变成 0),故用户程序不必循环查询操作完成标志来判断操作是否完成。当 CPU 从 RAM 中取指并运行时,如果执行对 FLASH 的页擦除 / 写操作,在执行该操作的同时,CPU 会进行下一条指令存取,为保证程序下一条指令的执行正确性,用户程序必须在对 FLASH 擦写操作后循环查询FLASH_CR1.BUSY 标志位,直到 FLASH_CR1.BUSY 标志位变成 0 后方可执行后续的任务。
• 使用寿命基于嵌入式 FLASH 的特性,FLASH 的操作次数和存储时间是有限的,用户在应用程序中应尽量避免频繁对某一页或某一地址的 FLASH 存储器进行擦写操作,以保证数据的可靠存储。具体寿命数据请参阅数据手册。
• 数据存储模式CW32F030 应用规定,数据在 FLASH 中以小端模式存储,即最低字节地址空间存放数据的最低有效字节数据。
• 预取和缓存配置CW32F030 的 FLASH 存储器带有预取缓存功能,可通过设置 FLASH_CR2.CACHE 为 1 和 FLASH_CR2.FETCH为 1,分别使能 FLASH 的缓存和预取功能,提高 MCU 对 FLASH 的访问效率。
• 低功耗特性FLASH 具有低功耗特性,通过设置 FLASH_CR1.STANDBY 为 1,可以让 FLASH 在系统进入深度休眠模式后自动进入低功耗状态,保证产品在低功耗模式下具有更低功率消耗。
|