前几天调试了一下DS18B20的程序,起先体系在裸奔的时分DS18B20能够很正常的读取数据。因为项目前期设计时增加了ucos实时操作体系。原以为把裸奔的程序移植过来就能够运用。成果悲惨剧发生了……假如做过这方面的朋友必定知道。增加后,你会发现体系不跑了,完全的死掉了。原因在何处?通过一整天的查找,发现本来体系的时刻片被占用了。导致ucos的ticks出现异常。
处理办法:一种办法是:修正OS_CPU_SysTickInit(void)函数,与delay函数进行兼容。在温度传感器延时的时分不影响操作体系的tick运转。这样就能够处理问题了。
还有一种办法便是,把18B20的延时定时器更换成TIM3或者是其他定时器。和体系的tick分隔。即可处理。