智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 8873|回复: 1
打印 上一主题 下一主题

[采集类] HC-SR04的ECHO收不到数据

[复制链接]

2

主题

3

帖子

0

精华

注册会员

Rank: 2

积分
152
威望
72
贡献
42
兑换币
41
注册时间
2016-4-14
在线时间
19 小时
毕业学校
昆明理工大学
跳转到指定楼层
1#
发表于 2016-7-12 22:27:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟是菜鸟,头一次玩超声波测距仪。按照这个技术要求进行了编程,先产生了一个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);     //等待高电平并开始计时

}
}

回复

使用道具 举报

2

主题

3

帖子

0

精华

注册会员

Rank: 2

积分
152
威望
72
贡献
42
兑换币
41
注册时间
2016-4-14
在线时间
19 小时
毕业学校
昆明理工大学
2#
 楼主| 发表于 2016-7-12 22:29:10 | 只看该作者
每次在下面while的等待高电平的时候数据一直都进不来,即便我采用最简单的延时,拉高Trig的电平,ECHO这个引脚还是接收不到信号。我是在在线调试的时候看到这接受引脚的数据。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|亿加合和智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-5-6 00:22 , Processed in 0.083716 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表