2017-12-15 39 views
0

STM32F4 검색이 있습니다. IAR embedded Workbench를 사용합니다. 나는이 키트를 처음 사용합니다. 나는 거리를 측정하고 싶다. 내 코드는 오류를주지 않는다. 거리는 항상 0입니다. 어떤 오류가있을 수 있습니까? 도와주세요. 덕분에 모두STM32F4 검색

#include "stm32f4_discovery.h" 
#include "delay.h" 

uint32_t Read_Distance(void); 
void Init(); 

uint32_t distance ; 

int main() 
{ 
    Init(); // initialisation de pin 
    SysTick_Init(); // pour pouvoire utiliser la fonction delay :) 

    while (1) 
    { 
     distance=Read_Distance(); 
     delay_nms(100); 
    } 
} 


void Init() 
{ 
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); 

    GPIO_InitTypeDef gpioStructure; 

    gpioStructure.GPIO_Pin = GPIO_Pin_10; 
    gpioStructure.GPIO_Mode = GPIO_Mode_OUT; 
    gpioStructure.GPIO_Speed = GPIO_Speed_100MHz; 
    GPIO_Init(GPIOD, &gpioStructure); 

    gpioStructure.GPIO_Pin = GPIO_Pin_11; 
    gpioStructure.GPIO_Mode = GPIO_Mode_IN; 
    GPIO_Init(GPIOD, &gpioStructure); 
} 

//Les Pins pour le Test sont PD10 (Trig) et PD11(echo) 

uint32_t Read_Distance(void) 
{ 
    __IO uint8_t flag=0; 
    __IO uint32_t disTime=0; 
    GPIO_SetBits(GPIOD,GPIO_Pin_10); 
    delay_nus(10); 
    GPIO_ResetBits(GPIOD,GPIO_Pin_10); 

    while(flag == 0) 
    { 
     while(GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_11) == SET) 
     { 
      disTime++; 
      flag = 1; 
     } 
    } 
    return disTime; 
} 
+0

일관성있게 코드의 들여 쓰기를 편집했습니다. 모든 코드, 특히 게시하는 모든 코드에 대해 동일한 작업을 수행 할 것을 적극 권장합니다. 따라서 무한히 읽기가 쉽습니다. 또한 영어로 의견을 게시하십시오. 간단한 영어 설명이 정교한 프랑스어 설명보다 도움이됩니다. –

답변

0

만약 내가 제대로 이해하고는, D10은 D11에 연결되어 당신은 당신의 신호가 높게 유지 기간을 확인하고 싶다. 이 경우, 핀이 높을 때 타이머 인터럽트 처리기의 카운터를 증가시키고 읽은 후에는 카운터 변수를 재설정해야합니다.