我们自己的板子,板子正常通电时程序运行正常,但是一旦进行安检操作或者插拔串口就会造成SPI卡死在读状态忙不忙的死循环中。void Flash_WaitforWriteEnd(void) { u8 Flash_sta = 0; // SPI2_SetSpeed(SPI_BaudRatePrescaler_4); SPI2_Flash_CS_LOW(); delay_us(2); SPI_FLASH_SendByte(READ_STATUS_REGISTER_1); do { Flash_sta = SPI_FLASH_SendByte(0xFF); }while((Flash_sta&0x01) == 0x01); SPI2_Flash_CS_HIGH(); }复制代码就是一直读到的就是忙,出不来。
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
2.产品开发中,通讯不要使用这种死循环的方式,而使用超时+打印log,即保证模块出问题不影响产品其它功能,也方便后期追踪
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
谢谢,找到问题了,是我读取忙状态的函数写的有点问题,我的读指令就发了一遍,在循环中也应发读指令。
哦,明白了。谢谢指点。