中级会员
- 积分
- 254
- 金钱
- 254
- 注册时间
- 2016-9-9
- 在线时间
- 91 小时
|
5金钱
本帖最后由 xmlhttp 于 2016-12-7 16:54 编辑
使用超声波测距,只有一个任务是没有问题的,但是有多个任务时运行一段时间程序会卡死。请问是什么原因?
测距原理网上一大堆:向TRIG脚输入至少10us的触发信号,该模块内部将发出 8 个 40kHz 周期电平并检测回波。一旦检测到有回波信号则ECHO输出高电平回响信号。回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。
我个人觉得是因为ucos中断引起的,例如发出声波后回波没回来的情况下被中断,中断时间内测距完成了,后面的死循环就没办法执行了。
[mw_shl_code=applescript,true]Trgger=1;
delay_us(20);
Trgger=0;
while(ECHO == 0);
TIM_Cmd(TIM5, ENABLE);
while(ECHO == 1);
TIM_Cmd(TIM5, DISABLE);[/mw_shl_code]
所以我在里面加了个禁止中断,但是里面又有一个定时器会导致计时不准确,这个要怎么弄? 下面是项目
UCOSII.zip
(4.93 MB, 下载次数: 396)
|
|