I2C中断里出现了switch或if语句中未处理的状态时,会导致死机。

chrishu |浏览346次
收藏|2022/12/02 10:26

收到几个数据后,I2C死机。

void I2C_SlaveTRx(uint32_t u32Status)

{

     ...

    if(u32Status == 0x60)

    ...

    else

    {

        /* TO DO */

        printf("Status 0x%x is NOT processed\n", u32Status);

}

}


满意回答

2022/12/02 10:28

现象:收到几个数据后,I2C死机。

说明:由于出现没有处理的状态,一直未执行到写SI,所以I2C外设不再做其它状态的处理。

解决:增加case,或者在default里重置I2C外设。

    else

    {

        /* TO DO */

        printf("Status 0x%x is NOT processed\n", u32Status);

        I2C_Close(I2C0);

        I2C0_Init();

}


nuvoton2022

其他回答(0)
0人关注该问题
+1
 加载中...