您好!
如标题所述、我正在尝试在擦除闪存时为 ISR 提供服务 、目前没有解决方法。
我的设置:
我已设置 CPU 计时器1、每100us 触发一次、并正在 ISR 中切换一个引脚。 每秒钟我将擦除一个(已完全写入)的闪存扇区、并观察闪存正在擦除时引脚在几毫秒内没有切换。
我所做的:
-我把我所有的函数放入 ram:调用闪存 API (所有后续层,一直到 main )的函数,FAPI 本身,还有计时器 ISR。 我通过存储器查看器检查这些函数是否在 RAM 中、我还可以确认它们是从 RAM 执行的、因为 PC 在断点 ISR 时指向 RAM。
-我不是访问在 ISR 中被擦除的扇区-实际上我在 ISR 中所做的只是通过直接从寄存器中写入 GPIO 数据来切换引脚。
-我也注意到 Fapi_issueAsyncCommandWithAddress 函数是阻塞类型。 CPU 在几毫秒的持续时间内保持此功能、在此期间、引脚不会切换。 Fapi_checkFsmForReady 应检查 FSM 是否已完成闪存擦除、我希望 CPU 快速退出 issueAsyncCommand 函数、然后在检查 FsmForReady 函数时循环(并能够执行其他代码)。 但这不会发生、FsmForReady 函数被检查一次并通过。
Question:
是否需要配置其他某个组件才能使其正常工作? 可以在此芯片上中断闪存 API 吗?