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

標題: STM32F103捕獲功能實現(xiàn)超聲波測距程序 [打印本頁]

作者: wqq_eeb    時間: 2020-11-7 20:13
標題: STM32F103捕獲功能實現(xiàn)超聲波測距程序
學(xué)習(xí)stm32的捕獲功能,能夠?qū)崿F(xiàn)2米內(nèi)精確測距。
#include "stm32f10x.h"
#include "input_capture.h"
#include <stdio.h>

/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
void delay_us(u16 time)
{
        u16 i;
        for(i=0;i<time*8;i++);
}



/* Private functions ---------------------------------------------------------*/
void start_measor_init(void)
{
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
        GPIO_InitTypeDef GPIO_InitStruct;
        GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_InitStruct.GPIO_Pin=GPIO_Pin_1;
        GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStruct);
        GPIO_ResetBits(GPIOA, GPIO_Pin_1);
}
void start_measor_start(void)
{

        TIM_CCxCmd(TIM2, TIM_Channel_1, TIM_CCx_Enable);
        GPIO_SetBits(GPIOA, GPIO_Pin_1);
        delay_us(40);
        GPIO_ResetBits(GPIOA, GPIO_Pin_1);
        



}
/**
  * @brief  Main program.
  * @param  None
  * @retval None
  */
int main(void)
{
   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
         start_measor_init();
         input_capture_init();
                flag=0;
  while (1)
  {
         unsigned i;
                i++;
         if(i%100==0)
         {
                 start_measor_start();
         }
  }
}


#include "input_capture.h"
#include "stm32f10x_tim.h"
unsigned char flag;
float distance ;
void input_capture_init(void)
{

        
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

        GPIO_InitTypeDef GPIO_InitStruct;
        GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPD;
        GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0;
        GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStruct);

        TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
        TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1;
        TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;
        TIM_TimeBaseInitStruct.TIM_Period=65535;
        TIM_TimeBaseInitStruct.TIM_Prescaler=7199;
        TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStruct);

        
        TIM_ICInitTypeDef TIM_ICInitStruct;
  TIM_ICInitStruct.TIM_Channel=TIM_Channel_1;
  TIM_ICInitStruct.TIM_ICFilter=0xF;
  TIM_ICInitStruct.TIM_ICPolarity=TIM_ICPolarity_Rising;
        TIM_ICInitStruct.TIM_ICPrescaler=TIM_ICPSC_DIV1;
        TIM_ICInitStruct.TIM_ICSelection=TIM_ICSelection_DirectTI;
        TIM_ICInit(TIM2, &TIM_ICInitStruct);
         
         NVIC_InitTypeDef NVIC_InitStruct;
         NVIC_InitStruct.NVIC_IRQChannel=TIM2_IRQn;
         NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
         NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=2;
         NVIC_InitStruct.NVIC_IRQChannelSubPriority=2;
   NVIC_Init(&NVIC_InitStruct);
         
        // TIM_Cmd(TIM3,ENABLE );         
   //TIM_CCxCmd(TIM3, TIM_Channel_1, TIM_CCx_Enable);
         //TIM_ITConfig(TIM3, TIM_IT_CC1, ENABLE);
        
        TIM_ITConfig(TIM2, TIM_IT_CC1, ENABLE);
        TIM_Cmd(TIM2,ENABLE );
        
}

void TIM2_IRQHandler(void)
{
        u16 record_rising,record_falling;

        if( TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET)
        {
                if(flag==1)
                {        record_falling=TIM_GetCapture1        (        TIM2        );
                        distance=(float)record_falling*340/200.0;
                        //record_rising=TIM_GetCapture1        (        TIM2        );
      flag=0;
                        TIM_OC1PolarityConfig(TIM2,TIM_ICPolarity_Rising); //CC1P=0 設(shè)置為上升沿捕獲
                        
                }
                else
                {
                        record_rising=0;
                        record_falling=0;
                         TIM_SetCounter(TIM2,0);
                  TIM_OC1PolarityConfig(TIM2,TIM_ICPolarity_Falling);                //CC1P=1 設(shè)置為下降沿捕獲
                 flag=1;
                //        
                        
                }
        
        }
  TIM_ClearITPendingBit(TIM2, TIM_IT_CC1);
}



template 基礎(chǔ)超聲波測距.7z

583.26 KB, 下載次數(shù): 23, 下載積分: 黑幣 -5






歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 午夜免费视频 | 欧美视频在线看 | 久久久久九九九九 | 成人黄色电影免费 | 国产成人网 | 天天干天天爱天天爽 | 欧美日韩国产在线观看 | 99久视频| 成人午夜精品 | 综合一区二区三区 | av永久免费| 日韩精品一二三区 | 亚洲欧美视频一区 | 日韩在线不卡 | 一区二区三区精品视频 | 在线观看国产视频 | 日韩亚洲视频 | 免费中文字幕日韩欧美 | 看羞羞视频免费 | 国产偷自视频区视频 | 国产一区 | 在线综合视频 | 狠狠综合久久av一区二区小说 | 国产四虎 | 青青草免费在线视频 | 日韩精品一区二区三区四区 | 亚洲成人久久久 | 国产一区三区视频 | 99精品电影| 99久久99| 国产免费观看久久黄av片涩av | 青青久在线视频 | 蜜桃视频在线观看免费视频网站www | 99热精品国产 | 色播视频在线观看 | 久久精品国产久精国产 | 欧美人妖网站 | 成人久久18免费网站 | 成人在线中文字幕 | 日日骚网 | 日韩欧美在线观看视频网站 |