久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1915|回復: 3
打印 上一主題 下一主題
收起左側

stm32控制超聲波模塊最大距離就顯示168cm,用例程代碼255多,搞不明白

[復制鏈接]
跳轉到指定樓層
樓主
ID:751817 發表于 2020-7-6 23:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include "hc_sr04.h"

float Distance;

void hcgpio_init(void)
{
        GPIO_InitTypeDef        gpio_struct;
        NVIC_InitTypeDef        nvic_struct;
        EXTI_InitTypeDef        exti_struct;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOA |
                                RCC_APB2Periph_AFIO, ENABLE);

        gpio_struct.GPIO_Pin            =       GPIO_Pin_0;
        gpio_struct.GPIO_Mode           =       GPIO_Mode_Out_PP;
        gpio_struct.GPIO_Speed          =       GPIO_Speed_50MHz;
        GPIO_Init(GPIOC,&gpio_struct);

        gpio_struct.GPIO_Pin            =       GPIO_Pin_1;
        gpio_struct.GPIO_Mode           =       GPIO_Mode_IPD;
        gpio_struct.GPIO_Speed          =       GPIO_Speed_50MHz;
        GPIO_Init(GPIOC,&gpio_struct);

        GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource1);

        exti_struct.EXTI_Line           =       EXTI_Line1;
        exti_struct.EXTI_Mode           =       EXTI_Mode_Interrupt;
        exti_struct.EXTI_Trigger        =       EXTI_Trigger_Rising;
        exti_struct.EXTI_LineCmd        =       ENABLE;
        EXTI_Init(&exti_struct);

        nvic_struct.NVIC_IRQChannel     =       EXTI1_IRQn;
        nvic_struct.NVIC_IRQChannelCmd  =       ENABLE;
        nvic_struct.NVIC_IRQChannelPreemptionPriority   =       2;
        nvic_struct.NVIC_IRQChannelSubPriority          =       2;
        NVIC_Init(&nvic_struct);

}

void EXTI1_IRQHandler(void)
{
        delay_us(10);

        if(EXTI_GetITStatus(EXTI_Line1) !=RESET)
        {
                TIM_SetCounter(TIM2,0);
                TIM_Cmd(TIM2,ENABLE);
               
                while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_1));  //μè′yμíμçÆ½
               
                TIM_Cmd(TIM2,DISABLE);
               
                Distance=TIM_GetCounter(TIM2)*340/200.0;
               
                if(Distance>0)
                {
                        printf("Distance:%f cm\r\n",Distance);
                }
                       
                EXTI_ClearITPendingBit(EXTI_Line1);


        }
}

void hc_sr04(void)
{
        GPIO_SetBits(GPIOC,GPIO_Pin_0);
        delay_us(20);
        GPIO_ResetBits(GPIOC,GPIO_Pin_0);

}

#include "hc_time.h"

void hctime_init(void)
{
        TIM_TimeBaseInitTypeDef         time_struct;
        NVIC_InitTypeDef                nvic_struct;

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 ,ENABLE);

        time_struct.TIM_Period          =       5000;
        time_struct.TIM_Prescaler       =       7199;
        time_struct.TIM_CounterMode     =       TIM_CounterMode_Up;
        time_struct.TIM_ClockDivision   =       0;
        //tim2
        TIM_TimeBaseInit(TIM2,&time_struct);

        TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
        TIM_ITConfig(TIM2,TIM_IT_Trigger,ENABLE);

        nvic_struct.NVIC_IRQChannel     =       TIM2_IRQn;
        nvic_struct.NVIC_IRQChannelCmd  =       ENABLE;
        nvic_struct.NVIC_IRQChannelPreemptionPriority   =  1;
        nvic_struct.NVIC_IRQChannelSubPriority          =  0;

        NVIC_Init(&nvic_struct);
}

void TIM2_IRQHandler(void)
{
        if(TIM_GetITStatus(TIM2,TIM_IT_Update) != RESET)
        {
                TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
        }

}





分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:476215 發表于 2020-7-7 00:12 | 只看該作者
是不是超聲波模塊信號多次反射了,可以降低超聲波的發射頻率試一下;還有一種可能是你計時的定時器出了問題,對比這查看下
回復

使用道具 舉報

板凳
ID:764088 發表于 2020-7-7 10:33 | 只看該作者
這個例程 有這些毛病:接收反饋回波,中斷處理開頭就延時,處理內用過雜, 過多,甚至打印。
本來超聲波模塊是通過 發送波及回波間隔,來測試 距離的,
回復

使用道具 舉報

地板
ID:751817 發表于 2020-7-7 10:58 | 只看該作者
qee654 發表于 2020-7-7 00:12
是不是超聲波模塊信號多次反射了,可以降低超聲波的發射頻率試一下;還有一種可能是你計時的定時器出了問題 ...

頻率減低了,也不行;定時器的問題不清楚
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区久久 | 99国内精品久久久久久久 | 亚洲网站在线观看 | 国产午夜精品一区二区三区四区 | av一区二区三区四区 | 91麻豆精品国产91久久久久久 | 中文字幕成人在线 | 日韩中文字幕 | 久久亚洲国产精品日日av夜夜 | 日韩在线观看网站 | 久久精品视频99 | 欧美日韩久久 | 日韩av成人 | 仙人掌旅馆在线观看 | 国产激情视频网站 | 欧美一区二区小视频 | 午夜激情视频在线 | 国产亚洲精品久久情网 | 精品欧美一区二区三区久久久 | 91久久夜色精品国产网站 | 成人字幕网zmw | 亚洲色视频 | 国产精品久久久久久久久免费丝袜 | 日美女逼逼 | 国产精品波多野结衣 | 中文字幕在线第一页 | 超碰人人做 | 三级视频在线观看电影 | 亚洲视频欧美视频 | 国产精品视频网站 | 一区二区在线免费播放 | 日韩在线视频观看 | 中文字幕av在线播放 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 欧美日韩在线一区 | 精品伊人| 亚州精品天堂中文字幕 | 国家aaa的一级看片 h片在线看 | 91久久久久久久久久久 | 国产精品久久性 | 国产精品1区2区 |