STM32的定時器輸入捕獲-超聲波測距案例

STM32的定時器輸入捕獲-超聲波測距案例

    • gitee代碼
    • 輸入捕獲硬件電路
    • 案例說明
    • 主函數代碼

gitee代碼

https://gitee.com/xiaolixi/l-stm32/tree/master/STM32F103C8T6/2-1tem-ld-timer-input-pluse

輸入捕獲硬件電路

在這里插入圖片描述

超聲波測距

案例說明

  1. 使用超聲波測距傳感器
  2. 使用tim1的輸入捕獲測量超聲波傳感器的返回值,其中Echo引腳使用通道1和通道2的間接選擇,Trig使用PB0。距離小于1M點亮LED,LED燈使用PA1

主函數代碼

其他代碼見倉庫

#include "stm32f10x.h"
#include "LED.h"
#include "app_timer.h"
#include "Delay.h"
#include "math.h"#define TRIG GPIOB/**
Echo 		PA8
Trigger PB0
LED 		PA1
*/
void GPIOB_0_init() {// Trigger引腳RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_10MHz;GPIO_Init(TRIG, &GPIO_InitStruct);
}void timer_init(void) {RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);TIM_TimeBaseInitTypeDef TIM_TIM_TimeBaseInitStruct;TIM_TIM_TimeBaseInitStruct.TIM_RepetitionCounter = 0;TIM_TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;TIM_TIM_TimeBaseInitStruct.TIM_Period = 65535;TIM_TIM_TimeBaseInitStruct.TIM_Prescaler = 71;TIM_TimeBaseInit(TIM1, &TIM_TIM_TimeBaseInitStruct);// Echo 引腳RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPD;GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8;GPIO_Init(GPIOA, &GPIO_InitStruct);TIM_ICInitTypeDef TIM_ICInitStruct;TIM_ICInitStruct.TIM_Channel = TIM_Channel_1;TIM_ICInitStruct.TIM_ICFilter = 0;TIM_ICInitStruct.TIM_ICPolarity = TIM_ICPolarity_Rising;TIM_ICInitStruct.TIM_ICPrescaler = TIM_ICPSC_DIV1;TIM_ICInitStruct.TIM_ICSelection = TIM_ICSelection_DirectTI;TIM_ICInit(TIM1, &TIM_ICInitStruct);TIM_ICInitStruct.TIM_Channel = TIM_Channel_2;TIM_ICInitStruct.TIM_ICFilter = 0;TIM_ICInitStruct.TIM_ICPolarity = TIM_ICPolarity_Falling;TIM_ICInitStruct.TIM_ICPrescaler = TIM_ICPSC_DIV1;TIM_ICInitStruct.TIM_ICSelection = TIM_ICSelection_IndirectTI; // 間接選擇TIM_ICInit(TIM1, &TIM_ICInitStruct);
}int main(void)
{GPIOB_0_init();// LED 顯示LED_Init();LED1_OFF();timer_init();while(1) {TIM_SetCounter(TIM1, 0);TIM_ClearFlag(TIM1, TIM_FLAG_CC1);TIM_ClearFlag(TIM1, TIM_FLAG_CC2);TIM_Cmd(TIM1, ENABLE);GPIO_WriteBit(TRIG, GPIO_Pin_0, Bit_SET);Delay_us(20);GPIO_WriteBit(TRIG, GPIO_Pin_0, Bit_RESET);while(TIM_GetFlagStatus(TIM1, TIM_FLAG_CC1) == RESET) {;}while(TIM_GetFlagStatus(TIM1, TIM_FLAG_CC2) == RESET) {;}TIM_Cmd(TIM1, DISABLE);// 換算float distance = (TIM_GetCapture2(TIM1) - TIM_GetCapture1(TIM1)) * 1e-6 * 340.0f / 2;if (distance < 1.0) {LED1_ON();} else {LED1_OFF();}Delay_ms(100);}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/91947.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/91947.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/91947.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[特殊字符] Spring Boot 常用注解全解析:20 個高頻注解 + 使用場景實例

一文掌握 Spring Boot 中最常用的 20 個注解&#xff0c;涵蓋開發、配置、Web、數據庫、測試等場景&#xff0c;配合示例講解&#xff0c;一站式掌握&#xff01;&#x1f4cc; 一、核心配置類注解 1. SpringBootApplication 作用&#xff1a;標記為 Spring Boot 應用的入口類&…

【工具變量】地級市城市包容性綠色增長數據(2011-2023年)

城市包容性綠色增長是指在推動城市經濟增長的過程中&#xff0c;兼顧環境可持續性、社會公平和包容性發展的理念與實踐。它強調在實現綠色轉型和低碳發展的同時&#xff0c;保障社會各群體&#xff0c;特別是弱勢群體的利益與參與權利&#xff0c;確保增長成果能夠公平共享 本…

深入理解React Hooks:從使用到原理

4. 源碼解析類:《深入理解React Hooks:從使用到原理》 # 深入理解React Hooks:從使用到原理?? **背景**: - Hooks解決了Class組件的哪些問題? - 為什么不能在循環/條件中調用Hooks??? **核心原理**:### 1. Hooks鏈表 React內部維護一個單向鏈表:fiber.memoizedSta…

【云原生】Docker 部署 Elasticsearch 9 操作詳解

目錄 一、前言 二、Elasticsearch 9 新特性介紹 2.1 基于 Lucene 10 重大升級 2.2 Better Binary Quantization(BBQ) 2.3 Elastic Distributions of OpenTelemetry(EDOT) 2.4 LLM 可觀測性 2.5 攻擊發現與自動導入 2.6 ES|QL 增強 2.7 語義檢索 三、基于Docker部署…

uview-ui使用u-search搜索框

1、效果圖 2、帶地址搜索框&#xff0c;在微信小程序線上需要開啟地圖定位接口&#xff0c;若沒有權限則顯示不了城市名&#xff0c;注意事項參考uniapp相關地圖 API調用-CSDN博客 <template><view><u-sticky offset-top"-1"><u-search v-mode…

Elasticsearch+Logstash+Kibana部署

目錄 一、實驗準備 1.下載安裝 2.下載java 2.同步主機系統時間 二、部署 1.部署elasticsearch 修改 /etc/elasticsearch/elasticsearch.yml 配置文件 修改 /etc/hosts/ 文件 啟動elasticsearch 查看是否啟動進程netstat -antptu | grep java 2.部署logstash 進入/et…

TEngine學習

關于靜態類中的靜態變量賦值&#xff1a; public static class ActorEventDefine{public static readonly int ScoreChange RuntimeId.ToRuntimeId("ActorEventDefine.ScoreChange");public static readonly int GameOver RuntimeId.ToRuntimeId("ActorEventD…

獵板:在 5G 與 AI 時代,印制線路板如何滿足高性能需求

5G 與 AI 技術的深度融合&#xff0c;推動電子設備向高速傳輸、高算力、高集成方向發展&#xff0c;印制線路板&#xff08;PCB&#xff09;作為核心載體&#xff0c;其性能直接決定終端設備的運行效率與可靠性。獵板 PCB 聚焦 5G 通信的高頻需求與 AI 算力的密集需求&#xff…

教你如何借助AI精讀文獻

目錄1. 原文2. 對文獻有一個快速的理解3. 專業術語解讀4. 解答疑問5. 借助AI翻譯摘要和引言部分5.1 **摘要 (Abstract)**5.2 **引言 (Introduction)**6. 介紹論文中的“Stack-Propagation”7. 查閱論文里的參考文獻&#xff0c;看看他是如何在Introduction中引述研究進展文獻&a…

FastAdmin框架超級管理員密碼重置與常規admin安全機制解析-卓伊凡|大東家

FastAdmin框架超級管理員密碼重置與常規admin安全機制解析-卓伊凡|大東家我們可以看到admin賬戶是不允許直接修改的&#xff0c;這也是目前fastadmin 框架不允許的&#xff0c;那么如何處理一、FastAdmin超級管理員密碼重置方法當FastAdmin的超級管理員密碼忘記或需要重置時&am…

我做的基礎服務項目,是如何實現 API 安全與限流的(短信、郵件、文件上傳、釘釘通知)

我做的基礎服務項目&#xff0c;是如何實現 API 安全與限流的&#xff08;短信、郵件、文件上傳、釘釘通知&#xff09;一、背景 最近我做了一個基礎服務項目&#xff0c;主要對外提供短信、郵件、文件上傳和釘釘通知等基礎功能。這些接口是多個業務系統都要調用的&#xff0c;…

(Python)類和類的方法(基礎教程介紹)(Python基礎教程)

源代碼&#xff1a;class Students:stats"大學"def __init__(self,name,age,sex,credit):self.namenameself.ageageself.sexsexself.creditcreditdef tell(self):return f"{self.name}說&#xff1a;你好"class Teachers(Students):stats"教師"d…

網絡智能體研究綜述

網絡智能體研究綜述1.什么是網絡智能體1.1.核心特征1.2.分類方式1.2.1.按功能定位1.2.2. 按網絡結構1.2.3.按應用場景1.3.典型應用場景1.4.技術基礎1.5.發展趨勢與挑戰1.5.1.發展趨勢1.5.2.核心挑戰2.網絡智能體盤點3.阿里的WebSailor3.1.WebSailor的主要功能和技術特點3.2.技術…

git 介紹與使用教程

Git 是一個 分布式版本控制系統&#xff0c;每個開發者都有一個完整的本地倉庫&#xff08;包含完整歷史記錄&#xff09;&#xff0c;而遠程倉庫&#xff08;如 GitHub、GitLab、Gitee&#xff09;是團隊共享的中央倉庫。它們的關系如下&#xff1a;本地倉庫&#xff08;Local…

[AI風堇]基于ChatGPT3.5+科大訊飛錄音轉文字API+GPT-SOVITS的模擬情感實時語音對話項目

[AI風堇]最近利用工作日的晚間和周末時間&#xff0c;我完成了一個有趣的Python編程小項目。這個項目的靈感來源于上個月在B站看到的"科技怪咖"UP主分享的一個視頻&#xff0c;視頻中展示了一個名為"DataMagic"的自動化數據處理工具&#xff0c;能夠智能分…

物聯網-規則引擎的定義

構建物聯網系統中的規則引擎是一個系統性的工程&#xff0c;它需要處理來自海量設備的實時數據流&#xff0c;并根據預定義的邏輯觸發動作。以下是構建一個高效、可靠、可擴展的物聯網規則引擎的關鍵步驟和考慮因素&#xff1a; 核心目標 實時性&#xff1a; 快速處理設備事件并…

SIMATIC WinCC Unified 使用 KPI 優化流程

大家好&#xff0c;我是東哥說-MES基本知識 33.1 KPI組態簡介現有工廠結構表示在面向對象的組態中定義標準化 KPI 概念的起點。 可通過在工廠視圖中用作實例的工廠對象類型來映射工廠的各組件。在“性能指 標”(Performance indicators) 全局編輯器中&#xff0c;可定義全局操作…

機器學習-多重線性回歸和邏輯回歸

目錄 1. 多重線性回歸 1.1 多元線性回歸 1.2 向量化&#xff08;矢量化&#xff09; 1.3 多元線性回歸的梯度下降算法 1.4 正規方程 2. 特征縮放 2.1 特征縮放 2.2 檢查梯度下降是否收斂 2.3 學習率的選擇 2.4 特征工程 2.5 多項式回歸 3. 邏輯回歸 3.1 Motivatio…

編程思想:程序自身的模型/函數模型硬件標準如何實現

前言前面提到過寫程序的過程:根據各種需求,構建程序模型(邏輯模型),再用代碼實現.本貼關于程序自身的模型以及函數模型,以及推導硬件標準從邏輯到代碼的思路.程序自身的模型如圖應用APP接受輸入---鼠標動作,鍵盤輸入的字符等,得到結果---畫面,顯示數據等.工具包括框架和編程語言…

基于JAVA Spring Boot物理實驗考核系統設計與實現 (文檔+源碼)

目錄 一.研究目的 二.需求分析 三.數據庫設計 四.系統頁面展示 五.源碼獲取方式 一.研究目的 信息數據的處理完全依賴人工進行操作&#xff0c;會耗費大量的人工成本&#xff0c;特別是面對大量的數據信息時&#xff0c;傳統人工操作不僅不能對數據的出錯率進行保證&…