如下后面//////////////
while(DSI_REG->DSI_INTSTA.BUSY); ////////////////
......
OUTREGBIT(DSI_START_REG,DSI_REG->DSI_START,DSI_START,1);
while(DSI_REG->DSI_INTSTA.CMD_DONE == 0);//////////////////
OUTREGBIT(DSI_INT_STATUS_REG,DSI_REG->DSI_INTSTA,CMD_DONE,0);
DSI_REG->DSI_INTSTA.BUSY
DSI_REG是某个类指针或结构体指针,这显然是个共享资源,其他地方也在操作这个指针,所以这个指针内部的成员有可能被改变。
DSI_INTSTA是这个指针的一个成员变量,这个成语变量同样是结构体或类
BUSY是DSI_INTSTA的成员变量。
那个循环的意思很简单,就是只要这个BUSY不为假,就永远循环下去,即你的程序会卡在那不动。
另外我上面也提到DSI_REG是某个共享资源,其他线程可能也会改变其内部值。所以某个时刻其他线程改了BUSY,使其为假,就跳出while,程序继续执行了。
换句话说你这while意思就是只要忙,那就得等着,不忙,继续~
下面那个while一个作用~
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。