久芯网

spi通讯 死机

avatar weiji 提问时间: 2023-08-09 07:21:15 / 未解决
stm32f401和热电偶芯片max31855通过spi通讯,如果没有将spi的相关中断优先级置于最高优先级,程序运行几秒后就会死机,将spi中断设置为最高优先级,程序可正常运行
8个回答
  • avatar xmshao
    回答时间: 2023-08-09 07:52:12

    根据你的描述,SPI的中断优先级较低时可能导致死机,你看看SPI中断服务程序里代码没有及时运行而可能导致死机的。

  • avatar weiji
    回答时间: 2023-08-09 08:13:15

    spi中断服务子程序很简单,只有几行数**算,应该不会导致死机。 我主要怀疑spi是属于同步通讯,同步时钟频率很高,会不会对时序要求非常严格。

  • avatar weiji
    回答时间: 2023-08-09 08:37:36
    xmshao 发表于 2022-2-24 17:28
    根据你的描述,SPI的中断优先级较低时可能导致死机,你看看SPI中断服务程序里代码没有及时运行而可能导致死 ...

    spi中断服务子程序很简单,只有几行数**算,应该不会导致死机。 我主要怀疑spi是属于同步通讯

  • avatar 废鱼
    回答时间: 2023-08-09 09:07:38

    理论上是不会的。可能是代码应用的问题。楼主是否开启了允许中断抢占的功能了?

  • avatar butterflyspring
    回答时间: 2023-08-09 09:32:21

    从应用上推测,F401应该做主,所以理论上中断时间长点就会导致通讯速度慢一点。 所以多半是其他中断打断SPI的中断服务程序,有可能影响了程序的运行结果,也就是逻辑冲突。这个需要检查不同中断间代码的影响或通过优先级设置避开影响。 可以考虑一下这方面的因素。

  • avatar weiji
    回答时间: 2023-08-09 09:56:42
    废鱼 发表于 2022-2-25 09:12
    理论上是不会的。可能是代码应用的问题。楼主是否开启了允许中断抢占的功能了? ...

    我程序中,中断比较多,中断不是根据各自的优先级,安排执行顺序吗?中断抢占功能在哪里开启?

  • avatar weiji
    回答时间: 2023-08-09 10:15:11
    butterflyspring 发表于 2022-2-25 10:48
    [md]从应用上推测,F401应该做主,所以理论上中断时间长点就会导致通讯速度慢一点。 所以多半是其他中断打 ...

    你好,我现在很想知道,如果其他中断的优先级比spi的优先级高,打断了spi中断,那是否会造成spi通讯异常?另一方面spi通讯异常,又是否会造成程序死机

  • avatar 废鱼
    回答时间: 2023-08-09 10:37:42

    NVIC_PriorityGroupConfig设置的是几? NVIC_PriorityGroup_4:不同组优先级别间,依据优先级强弱,优先级别高的组的中断源可以打断优先级别低的组的正在做的事情;(即:不同组优先级间,可以中断嵌套)

会员中心 微信客服
客服
回到顶部