tm4c123的US-100超声波测距程序
时间: 2023-07-28 13:11:14 浏览: 55
以下是使用tm4c123和US-100超声波传感器进行测距的示例程序:
```c
#include <stdbool.h>
#include <stdint.h>
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/gpio.h"
#include "driverlib/pin_map.h"
#include "driverlib/sysctl.h"
#include "driverlib/timer.h"
#include "driverlib/interrupt.h"
#define TRIGGER_PIN GPIO_PIN_3
#define ECHO_PIN GPIO_PIN_2
#define TRIGGER_PORT GPIO_PORTD_BASE
#define ECHO_PORT GPIO_PORTD_BASE
#define TIMER_BASE TIMER0_BASE
volatile uint32_t distance;
void Timer0IntHandler(void)
{
TimerIntClear(TIMER_BASE, TIMER_TIMA_TIMEOUT);
uint32_t start = TimerValueGet(TIMER_BASE, TIMER_A);
uint32_t end = TimerValueGet(TIMER_BASE, TIMER_A);
if (end > start)
{
distance = (end - start) / (SysCtlClockGet() / 1000000) / 58;
}
else
{
distance = ((2^24 - start) + end) / (SysCtlClockGet() / 1000000) / 58;
}
}
int main(void)
{
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);
SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
GPIOPinConfigure(GPIO_PD2_T0CCP0);
GPIOPinTypeTimer(GPIO_PORTD_BASE, GPIO_PIN_2);
GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_3);
GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0x00);
GPIOPinTypeGPIOInput(GPIO_PORTD_BASE, GPIO_PIN_2);
GPIOPadConfigSet(GPIO_PORTD_BASE, GPIO_PIN_2, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);
TimerConfigure(TIMER_BASE, TIMER_CFG_SPLIT_PAIR | TIMER_CFG_A_CAP_TIME_UP);
TimerControlEvent(TIMER_BASE, TIMER_A, TIMER_EVENT_POS_EDGE);
TimerLoadSet(TIMER_BASE, TIMER_A, 0xffff);
TimerIntEnable(TIMER_BASE, TIMER_TIMA_TIMEOUT);
TimerEnable(TIMER_BASE, TIMER_A);
IntEnable(INT_TIMER0A);
IntMasterEnable();
while (1)
{
GPIOPinWrite(TRIGGER_PORT, TRIGGER_PIN, TRIGGER_PIN);
SysCtlDelay(10);
GPIOPinWrite(TRIGGER_PORT, TRIGGER_PIN, 0x00);
SysCtlDelay(2000000);
uint32_t dist = distance;
// 在此处使用测量到的距离进行你的操作
}
}
```
这个程序初始化了tm4c123的定时器和GPIO,然后通过定时器捕获模式测量超声波传感器返回的脉冲宽度来计算距离。你可以在`// 在此处使用测量到的距离进行你的操作`注释下方添加你需要执行的代码来处理测量到的距离。
请注意,这只是一个示例程序,你可能需要根据实际情况进行适当的更改和调整。此外,还需要根据你的硬件连接和tm4c123的引脚配置进行调整。