我有一个主文件在STM32F4芯片上运行,ThreadX在后台运行(WICED SDK的一部分供你知道)。在这种情况下,我不使用任何ThreadX API。
我的代码设置如下:
void func_a(void) {
...
interact_over_spi();
}
void func_b(void) {
...
}
int main() {
func_a();
func_b();
}
在 func_a()中,它通过SPI与串行NOR闪存芯片进行交互。但每次执行时,它似乎都会在一秒左右后提前终止。我注意到了这一点,因为 interact_over_spi()会将消息打印到串行控制台,然后突然停止并且来自 func_b()的消息开始打印。
我甚至不知道从哪里开始排除故障。函数运行的时间有长度限制吗?就像我说的那样,我默认使用ThreadX而不使用任何线程管理功能。我还注意到,当我将设备置于GDB下时问题就消失了。似乎在 interact_over_spi()的中间有断点迫使它运行直到完成。有什么想法吗?