简而言之:不。至少没有一种有用的方式。
更长:写入闪存的速度慢不是由于CPU速度太慢造成的,而是由耗时的页面写入闪存周期引起的。 (所以,DMA不是更快)。理论上你可以使用DMA写入闪存(即使这有点棘手并且有一些陷阱),但你不会获得任何速度。原因是,CPU在写入时尝试访问闪存时将暂停。因此,当DMA写入时,CPU将无法从那里执行代码 - 没有时间获得。
手册说:
任何在写入或擦除STM32F4xx时读取闪存的尝试都会导致总线停止。程序操作完成后,将正确处理读取操作。这意味着在写入/擦除操作正在进行时无法执行代码或数据提取。
这意味着在DMA运行时无法从任何闪存区域执行代码 - CPU将在该时间段内暂停。您 可以 然而,使事情变得更复杂,并将代码的一部分复制到RAM中以在那里执行它来解决这个问题。
一些F4系列有4k的可电池供电的RAM。使用它,处理速度更快,更简单。
另一种可能性是使用具有读写能力的双库设备。 在这些设备中有两组闪存。在将数据写入第二存储体时,可以从一个存储体执行代码。