无论是SPI还是IIC时序等待的解决方法

2019-10-11 17:00发布

无论是SPI还是IIC时序等待的时候大多数都用下面的这一句
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);



用while来等待标志位,但是如果一直等不到 那么这里不就成为了死循环了嘛?


当然还有另外一种方法 就是软件定时的写法


直接写一个延时等待和时序图里相符合的固定时间 然后继续下一步操作 (这种方法更不稳定)


所以特别来问问 有经验的老司机 除了上面这两种方法,是否还有更好的方法可以用来处理各种时序中等待的问题


而且不会造成可能会死循环这种情况,有什么好的解决办法吗? 求教
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
他说他不在
1楼-- · 2019-10-11 18:16
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET  &&  i++ < 200); 时间自己定
154648875
2楼-- · 2019-10-11 23:53
我自己一般用的方法和上面说的一样  就是在等待时去记一个数   这个数大于多少  就跳出  小于就等待

一周热门 更多>