找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2126|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

stm32f4 HCSR04的中斷輸入程序,低電平也會進(jìn)入

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:343923 發(fā)表于 2018-10-13 23:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
有哪位大佬知道這里錯在哪里嗎?我這個設(shè)置是高電平進(jìn)入中斷!但是低電平也會進(jìn)入
  1. #include "stm32f4xx.h"
  2. #include "sys.h"
  3. #include "ULT.h"
  4. #include "systick.h"
  5. #include <stdio.h>
  6. float UltrasonicWave_Distance;
  7. void Ultrasonic_init(void)
  8. {
  9.   GPIO_InitTypeDef GPIO_InitStructure;
  10.   EXTI_InitTypeDef  EXTI_InitStruct;

  11.   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);

  12. /* 配置PG6為輸出模式,讓這根引腳具有輸出高低電平的功能 */
  13.   GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_5;    //第5號引腳
  14.   GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_OUT;   //輸出模式
  15.   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;   //推挽輸出,增強(qiáng)驅(qū)動能力,引腳的輸出電流更大
  16.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;  //引腳的速度最大為100MHz
  17.   GPIO_InitStructure.GPIO_PuPd  =  GPIO_PuPd_UP;   //使用內(nèi)部上拉電阻
  18.   GPIO_Init(GPIOE, &GPIO_InitStructure);
  19.   GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_6;    //第6號引腳
  20.   GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_IN;   //輸入
  21.    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  //引腳的速度最大為100MHz
  22.   GPIO_InitStructure.GPIO_PuPd  =  GPIO_PuPd_UP;   //使用內(nèi)部上拉電阻
  23.   GPIO_Init(GPIOE, &GPIO_InitStructure);


  24.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
  25.   SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource6);
  26.   
  27.   EXTI_InitStruct.EXTI_Line     = EXTI_Line6;//設(shè)置EXTI6
  28.   EXTI_InitStruct.EXTI_LineCmd  = ENABLE; //開放EXTI6的中斷請求(不能屏蔽EXTI0的中斷請求)
  29.   EXTI_InitStruct.EXTI_Mode     = EXTI_Mode_Interrupt;//是中斷而不是事件
  30.   EXTI_InitStruct.EXTI_Trigger  = EXTI_Trigger_Rising;//確定EXTI0觸發(fā)中斷的方式為下降沿
  31.   EXTI_Init(&EXTI_InitStruct);

  32.    PEout(5) = 0;

  33. }
  34. void EXTI9_5_IRQHandler(void)
  35. {
  36.    uint32_t t=0;
  37.     delay_nus(10);
  38.   if(EXTI_GetITStatus(EXTI_Line6))
  39.   {
  40.     while(PEout(6) != 0)                  //等待低電平
  41.       {
  42.       t++;
  43.      delay_nus(8);
  44.     }  
  45.      t = t/2;
  46.     UltrasonicWave_Distance = t*3;          //計算距離&&UltrasonicWave_Distance<150   
  47.     printf("temp=%d\r\n",t);
  48.     EXTI_ClearITPendingBit(EXTI_Line6);  //清除EXTI6線路掛起位
  49.   }
  50. }
  51. void UltrasonicWave_StartMeasure(void)
  52. {
  53.   PEout(5) = 1;     //送>10US的高電平RIG_PORT,TRIG_PIN這兩個在define中有?
  54.   delay_nus(20);                        //延時20US
  55.   PEout(5) = 0;
  56. }

復(fù)制代碼


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

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表