请问,dma flash 的例程是否没有考虑到二次写flash的情况?
图中 FLASH->CTRL &= 0x00003FFE; 是我根据非 dma 方式的 FLASH 例程自加的操作,如果没有这一句的话,只能写入一次,第二次执行DMA flash写入的时候,使用 FLASH_WaitForLastOpt(FLASH_ON_CHIP_PROGRAM_TIMEOUT) 查询执行结果,其结果永远为 FLASH_ERR_PG。
非 DMA 方式 flash 的写操作有对 PG 位置1,执行完后又清0了,FLASH->CTRL &= CTRL_Reset_PG; CTRL_Reset_PG 就等于 0x00003FFE,按常理来说,flash 控制寄存器此位非自动清零,理应要清除的。
|