智能车制作
标题:
HC-SR04的ECHO收不到数据
[打印本页]
作者:
inborn
时间:
2016-7-12 22:27
标题:
HC-SR04的ECHO收不到数据
小弟是菜鸟,头一次玩超声波测距仪。按照这个技术要求进行了编程,先产生了一个1Hz的方波,理应满足了10us以上的脉冲,示波器也读的到波形。这个时候理应ECHO向一个设为输入的IO口发一个高电平,但是我读取这个引脚上的电平状态,却一直是0,想了很长时间没有想明白,我把程序贴出来,还请大家帮我看看什么地方出了问题。
static void PIT_ISR(void)
{
/*翻转电平/
GPIO_ToggleBit(HW_GPIOC, 4);
}
int main(void)
{
//PTC4发脉冲,配置为输出引脚
SIM->SCGC5 |= SIM_SCGC5_PORTC_MASK;
PORTC->PCR[4] |= PORT_PCR_MUX(1);
PTC->PDOR |= GPIO_PDOR_PDO(0); //复位引脚
PORTC->PCR[4] |= PORT_PCR_IRQC_MASK; //中断使能
//-OPP模式
PORTC->PCR[4] &= ~PORT_PCR_PE_MASK; // 禁止PTC上下拉电阻功能
PORTC->PCR[4] &= ~PORT_PCR_ODE_MASK; // 禁用开漏输出
PTC->PDDR |= GPIO_PDDR_PDD_MASK; // 数据方向为输出
//PTD4收脉冲,输入引脚
SIM->SCGC5 |= SIM_SCGC5_PORTD_MASK;
PORTD->PCR[4] |= PORT_PCR_MUX(1);
PTD->PDOR |= GPIO_PDOR_PDO(0); //复位引脚
PORTD->PCR[4] |= PORT_PCR_IRQC_MASK; //中断使能
PORTD->PCR[4] |= PORT_PCR_IRQC(1011); // PORTD跳变沿产生中断
//IPD模式
PORTD->PCR[4] |= PORT_PCR_PE_MASK; //开启PTD上下拉电阻功能
PORTD->PCR[4] &= ~PORT_PCR_PS_MASK; // 开启下拉电阻
PORTD->PCR[4] &= ~PORT_PCR_ODE_MASK; // 禁用开漏输出
PTD->PDDR &= ~GPIO_PDDR_PDD_MASK; // 数据方向为输入
/* 初始化PIT */
PIT_InitTypeDef PIT_InitStruct1;
PIT_InitStruct1.chl = HW_PIT_CH0;
PIT_InitStruct1.timeInUs = 1000*1000; /* 定式周期1s */
PIT_Init(&PIT_InitStruct1);
/* 注册中断回调函数*/
PIT_CallbackInstall(HW_PIT_CH0, PIT_ISR); //0号定时器的中断处理
/* 开启PIT0的定时器中断 */
PIT_ITDMAConfig(HW_PIT_CH0, kPIT_IT_TOF, true);
while(1)
{
uint8_t status ;
status = GPIO_ReadBit(HW_GPIOD, 4); //读取PTD4输入引脚上的电平状态
while(!status == 1); //等待高电平并开始计时
}
}
作者:
inborn
时间:
2016-7-12 22:29
每次在下面while的等待高电平的时候数据一直都进不来,即便我采用最简单的延时,拉高Trig的电平,ECHO这个引脚还是接收不到信号。我是在在线调试的时候看到这接受引脚的数据。
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2