在STM32F4系列中,中断延迟主要受取指延迟影响。当CPU在168MHz运行时,FLASH访问速度低于CPU,若不配置等待周期,会导致取指错误或性能下降。建议:1) 设置FLASH_ACR寄存器的LATENCY为5个等待周期(对应168MHz),确保正确读取。2) 启用预取缓冲(PRFTEN=1)和指令缓存(ICEN=1),可减少重复取指延迟,尤其对中断服务程序(ISR)中的循环或跳转指令效果显著。3) 将中断向量表和ISR代码放置在RAM中(如通过__attribute__((section(".ramfunc")))),避免FLASH等待,可进一步降低延迟。实操时,先配置FLASH等待周期,再启用预取和缓存,最后用逻辑分析仪测量GPIO翻转时间验证优化效果。注意,预取缓冲在顺序执行时有效,分支时可能失效,因此ISR应尽量线性化。
mcuku 阿沐 · 2026-08-27