我的STM32 MCU使用的是外部SPI闪存.

我想知道以下情况是否会导致闪存或读缓冲区中的数据损坏?

如果ISR同时触发,而主进程正在进行与闪存的通信(读/写/擦除),并且ISR占用一些时钟周期,则返回到通信.它会导致任何这样的问题吗?我怎样才能继续调查它呢?

注:ISR不访问SPI总线.

推荐答案

不你会没事的 作为SPI总线上的主器件,STM32产生时钟信号,决定通信速率. 如果发生了什么事情使CPU变慢,您可能会注意到的唯一一件事是,时钟线上的某些转换之间存在比必要的更长的延迟,但这不会导致与您通信的SPI设备出现任何问题.

如果您不确定这一点,请try 在代码中的许多不同位置设置100微秒的延迟,看看SPI通信是否会出错.

C++相关问答推荐

char为16位且Short也为16位的c环境合法吗

ATmega328P USART发送字符重复打印

是否有任何情况(特定类型/值),类型双关在所有符合标准的C实现中产生相同的行为?

如何在C宏中确定Windows主目录?

将 struct 变量赋给自身(通过指针取消引用)是否定义了行为?

可以将C变量限制为特定的读/写速度吗?

向上强制转换C中的数值类型总是可逆的吗?

如果dim指定数组中的数据量,使用dim-1会不会潜在地导致丢失一个元素?

平均程序编译,但结果不好

如何用c语言修改shadow文件hash部分(编程)?

Boyer Moore算法的简单版本中的未定义行为

处理来自浏览器的HTTP请求

在进程之间重定向输出和输入流的问题

`预期说明符-限定符-列表在‘(三元运算符中的’token`‘之前

我不知道为什么它不能正常工作,我用了get()和fget(),结果是一样的

从另一个宏函数调用C宏

GETS()在C++中重复它前面的行

共享目标代码似乎不能在Linux上的进程之间共享

如果类型是新的,offsetof是否与typeof一起工作?

Makefile - 将 .o 文件放入子文件夹中