菜鸟求助~~~超声波测距

2019-03-24 10:45发布

不用中断的超声波测距
TimerLoadSet(TIMER0_BASE,TIMER_A,SysCtlClockGet());//初值装满40000000
GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3, 0x08);//触发信号
SysCtlDelay(SysCtlClockGet()/3000000*20); //延时20微秒
GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3, 0x00);//触发结束等待回波
while(GPIOPinRead(GPIO_PORTA_BASE, GPIO_PIN_2)==0x00);//检测到回波上升沿跳出循环
TimerEnable(TIMER0_BASE, TIMER_A);//开始计时
while(GPIOPinRead(GPIO_PORTA_BASE, GPIO_PIN_2)==0x04);//检测到回波下降沿跳出循环
运行至此时用串口输出TimerLoadGet(TIMER0_BASE, TIMER_A)的值,无论超声模块怎么放得到的全是装的初值40000000为什么啊啊~~~
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
mangoal
1楼-- · 2019-03-24 19:57
 精彩回答 2  元偷偷看……
Study_Stellaris
2楼-- · 2019-03-24 20:39
< :TI_MSP430_内容页_SA7 --> 你应该用 TimerValueGet
基辅之门
3楼-- · 2019-03-24 21:38
Study_Stellaris 发表于 2014-11-6 09:19
你应该用 TimerValueGet

解决。。非常感谢!!
基辅之门
4楼-- · 2019-03-25 00:07
 精彩回答 2  元偷偷看……
Study_Stellaris
5楼-- · 2019-03-25 03:28
先不要管距离,首先要测试到准确的 timer_value.
也就是时间间隔。
这个间隔应该是从你发送完超声波立刻开始计时到你收到超声波停止。
我看你的程序好像是收到后开始计时,这里会不会有问题?
music_586
6楼-- · 2019-03-25 03:55
测距,用PWM输入捕获啊;

一周热门 更多>

相关问题

    相关文章