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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

STM32F103捕獲功能實(shí)現(xiàn)超聲波測(cè)距程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:82220 發(fā)表于 2020-11-7 20:13 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
學(xué)習(xí)stm32的捕獲功能,能夠?qū)崿F(xiàn)2米內(nèi)精確測(cè)距。
#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ǔ)超聲波測(cè)距.7z

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

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 夜夜爽99久久国产综合精品女不卡 | 成人国产精品久久久 | 欧美a在线看 | 澳门永久av免费网站 | 国产一区二区精品在线 | www.日韩| 久久综合九色综合欧美狠狠 | 国产日韩一区二区 | 日本 欧美 国产 | 狠狠干五月天 | 在线观看免费av片 | 欧美三区在线观看 | 91高清视频在线观看 | 亚洲一区二区在线免费观看 | 久久综合一区二区 | 免费看一区二区三区 | 欧美一区二区三区在线看 | 久草免费在线 | 中文字幕在线视频一区二区三区 | xxxxx黄色片| 成人免费视频播放 | 九九亚洲| 欧美日韩一区不卡 | 日韩欧美在线观看一区 | www.天天操.com | 日韩在线免费视频 | 亚洲日韩中文字幕一区 | 亚洲精品18| 视频一区二区国产 | 成人久久久久久久久 | 国产伦精品一区二区 | 国产精品国产精品国产专区不蜜 | 国产激情福利 | 欧美电影一区 | 一区二区三区免费在线观看 | 成人av免费播放 | 久久久久国产一区二区三区四区 | 99亚洲精品 | 91se在线| 精品亚洲第一 | 日韩一区二区免费视频 |