第十九天-輸入捕獲實驗

一、輸入捕獲概述

1、輸入捕獲框圖

2、輸入捕獲工作詳解

①設置輸入捕獲濾波器

可以設置濾波,濾除一些高電平脈寬不足的脈沖信號。

②設置捕獲極性

③輸入捕獲映射

④輸入捕獲分頻器

這里的捕獲是將計數器的值存入比較寄存器中,分頻次的作用是設置幾個上升沿/下降沿來臨,才執行一次捕獲。

⑤發生捕獲時產生中斷

3、相關引腳

在數據手冊中可以查看。

因為我們要使用按鍵模擬輸入的波形,PA0為WAKE_UP按鍵,所以可以使用TIM5通道1或者TIM2通道1。

二、相關庫函數

注意這里GPIO的下拉輸入,只是針對該實驗,因為按鍵只會模擬高電平。

一般在輸入捕獲中,GPIO使用浮空輸入。

三、相關實驗

1、實驗目的

2、相關代碼

time.h
#ifndef __TIMER_H
#define __TIMER_H
#include "stm32f10x.h"//標志位 1:是否完成本次捕捉 1:上次是否捕捉到高電平 6:計時器重裝載次數
extern u8 flag;
//獲取的比較值
extern u16 cValue;void Timer_Int_Init(u16 preScaler,u16 value);void Timer_PWM_Init(u16 preScaler,u16 value);void Timer_Cap_Init(u16 preScaler,u16 value);#endif
time.c
//定義flag
u8 flag = 0;
u16 cValue = 0;void TIM2_IRQHandler()
{//如果計時器發生更新if(TIM_GetITStatus(TIM2,TIM_IT_Update) == SET){//如果超過最大更新次數,則為捕捉完畢if((flag & 0x3F) == 0x3F){flag |= 0x80;}else{flag++;}//清空中斷標志位TIM_ClearITPendingBit(TIM2,TIM_IT_Update);}//如果捕捉到上升沿 / 下降沿if(TIM_GetITStatus(TIM2,TIM_IT_CC1) == SET){//如果上次未捕捉上升沿 此時需要捕捉上升沿if((flag & 0x40) == 0){flag = 0;cValue = 0;TIM_SetCounter(TIM2, 0); // 清零計數器TIM_Cmd(TIM2, ENABLE);   // 然后啟動flag |= 0x40;TIM_OC1PolarityConfig(TIM2,TIM_OCPolarity_Low);//捕捉下降沿}else //如果上次已捕捉上升沿,此次應該捕捉下降沿{cValue = TIM_GetCapture1(TIM2);TIM_Cmd(TIM2,DISABLE); //停止定時器flag |= 0x80; //最高位設1TIM_OC1PolarityConfig(TIM2,TIM_OCPolarity_High); //捕捉上升沿}//清空中斷標志位TIM_ClearITPendingBit(TIM2,TIM_IT_CC1);}
}
main.c
#include "stm32f10x.h"
#include "delay.h"
#include "led.h"
#include "timer.h"
#include "usart.h"int main()
{extern u8 flag;extern u16 cValue;u16 time = 0; //以ms計數u16 value = 8999;u16 preScaler = 8000;//一個計數周期為1sdelay_init();uart_init(115200);Timer_Cap_Init(preScaler,value);while(1){//需要檢測 完成位if((flag & 0x80) == 0x80){time = (flag & 0x3F) * 1000 + cValue / 9;flag = 0;//不會重復檢測//通過串口發送時間printf("%d\r\n",time);}}
}

3、實驗總結

①:要注意多個中斷共用一個中斷函數,所以在中斷函數中要進行判斷。

②:extern修飾的變量,定義一次,多次聲明。

③:printf中/r/n表示換行。

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

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

相關文章

多線程問題,子線程同時操作全局變量,使用后需要清空嗎 ?

背景:目前有一個全局變量 ,某個方法中通過多線程,都操作這個變量,向這個全局變量中去添加元素,然后等所有子線程執行完了之后,對這個全局變量進行批量保存,然后這個全局變量還需要手動去清空嗎&…

Netty知識儲備:BIO、NIO、Reactor模型

學習Netty之前,首先先掌握這些基礎知識:阻塞(Block)與非阻塞(Non-Block),同步(Synchronous)與異步(Asynchronous),Java BIO與NIO對比。…

用生成器守住架構,用 AI 放大效率:一套可落地的 AI 編程方法論

背景與問題 現實困境: 直接讓 AI 產出整塊業務代碼,常常與現有架構風格、分層邊界、依賴策略不一致,后續改造成本高;AI 對現實業務語境、領域規則難以精準把握;在既定模板成熟的場景下,代碼生成器往往更快、更整齊。目…

碼頭岸電系統如何保障供電安全?安科瑞絕緣監測及故障定位方案解析

當岸電電網是TN-S系統時,船體未接專用接地線且船舶電網未與岸電零線接通,船舶電網發生單相接地故障時,人站在岸上觸及船體會有觸電危險,零線上可能出現高電壓,單相接地電流大。當船體接專用接地線且船舶電網接入岸電零…

ESP32_u8g2移植

前言 U8g2 是一個用于嵌入式設備的單色圖形庫。U8g2支持單色OLED和LCD,并支持如SSD1306 SSD1315等多種類型的OLED驅動,幾乎市面上常見都支持。 U8g2源碼 download:https://github.com/olikraus/u8g21:環境 ESP32 S3(ESP32-S3-Dev…

MCP實現:.Net實現MCP服務端 + Ollama ,MCP服務端工具調用

本文使用.Net編寫MCP服務端 Ollama ,實現簡單MCP調用,代碼僅實現基本演示功能。 文章目錄一、Ollama如何安裝使用二、創建.Net8項目,開發MCP服務端三、開發MCP客戶端,并對接Ollama一、Ollama如何安裝使用 請移步:htt…

Docker的安裝使用以及常見的網絡問題

一、什么是DockerDocker是一種容器化技術,用于快速打包、分發和運行程序。他的核心思想是"一次構建,到處運行",通過將應用及其依賴的環境打包到一個輕量級、可移植的容器中,實現跨平臺一致運行。二、Docker的安裝1.Cent…

C++入門學習

1.命名空間的介紹首先我們看到如下的代碼&#xff0c;在C語言中&#xff1a;#include <stdio.h> #include <stdlib.h> int rand 10; // C語言沒辦法解決類似這樣的命名沖突問題&#xff0c;所以C提出了namespace來解決 int main() {printf("%d\n", rand…

解決python錯誤:playwright._impl._errors.TimeoutError: Timeout 30000ms exceeded.

from playwright.sync_api import sync_playwrightwith sync_playwright() as p:browser = p.chromium.launch(headless=False)page = browser.new_page() page.goto(url)page.wait_for_load_state(networkidle) 在Python環境中運行以上代碼后報錯: page.wait_for_load_…

爬蟲逆向之雷池waf

本文章中所有內容僅供學習交流使用&#xff0c;不用于其他任何目的。否則由此產生的一切后果均與作者無關&#xff01; 雷池waf概念 雷池 WAF&#xff08;SafeLine&#xff09;是長亭科技開源的一款 Web 應用防火墻&#xff0c;部署在網站前面&#xff0c;把所有進來的 HTTP/…

23種設計模式解析--行為型

行為型模式&#xff08;協作的藝術&#xff09; 觀察者模式 觀察者模式詳解 模式定義 觀察者模式&#xff08;Observer Pattern&#xff09;是一種行為設計模式&#xff0c;用于建立對象間一對多的依賴關系。當一個對象&#xff08;Subject&#xff09;狀態變化時&#xff0c;所…

Linux系統之lua 詳解

命令簡介 lua 是 Lua 語言的解釋器&#xff0c;用于加載和執行 Lua 程序&#xff08;包括文本源碼和預編譯的二進制文件&#xff09;。它支持兩種運行模式&#xff1a;批處理模式&#xff08;執行指定腳本文件&#xff09;和交互式模式&#xff08;逐行讀取并執行輸入的命令&am…

visual studio 無明顯錯誤,但是無法編譯成功解決—仙盟創夢IDE

往后面查看rror CS0246: 未能找到類型或命名空間名“SimpleClass”(是否缺少 using 指令或程序集引用?)修復阿雪技術觀在科技發展浪潮中&#xff0c;我們不妨積極投身技術共享。不滿足于做受益者&#xff0c;更要主動擔當貢獻者。無論是分享代碼、撰寫技術博客&#xff0c;還是…

《論文閱讀》傳統CoT方法和提出的CoT Prompting的區分

論文&#xff1a;Chain-of-Thought Prompting Elicits Reasoning in Large Language Models作者對傳統CoT方法和本文提出的CoT Prompting的區分。1. 傳統方法的局限性 (1) 基于微調的CoT&#xff08;Rationale-Augmented Training&#xff09; 實現方式&#xff1a;需人工標注大…

Minio 高性能分布式對象存儲

1、什么是對象存儲? 描述: 對象存儲&#xff08;Object Storage&#xff09;是一種存儲數據的計算機體系結構&#xff0c;它以對象的形式存儲和管理數據。與傳統的文件系統和塊存儲不同&#xff0c;對象存儲將數據作為對象存儲在分布式的存儲集群中&#xff0c;每個對象都有一…

[深度學習] 大模型學習4-RAG技術全景解析

在大語言模型基礎知識一文中&#xff0c;檢索增強生成&#xff08;Retrieval-Augmented Generation&#xff0c;簡稱 RAG&#xff09;技術作為構建大語言模型&#xff08;Large Language Model&#xff0c;簡稱 LLM&#xff09;應用的一種方式已被簡要提及&#xff0c;本文將詳…

4G/5G無線電單元系統

4G/5G無線電單元系統 ADI公司的核心技術和領域專業知識幫助客戶在全球范圍內規劃、設計、打造更出色的高性能通信系統。 我們的無線電單元(RU)設計平臺利用新一代技術來提供高性能解決方案&#xff0c;幫助客戶消除設計障礙、縮短產品開發周期&#xff0c;加快產品上市時間。 價…

HarvardX TinyML小筆記1(番外2:神經網絡)

1 介紹 圖片來自&#xff1a;https://zh.wikipedia.org/zh-cn/%E4%BA%BA%E5%B7%A5%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C 神經網絡一直感覺挺神奇的&#xff0c;江湖也說可解釋性很差&#xff0c;無論如何還是學學吧。借這次學習哈佛的TinyML&#xff0c;也就順帶弄了。 這里…

計算機網絡 第2章通信基礎(竟成)

第 2 章 物理層【考綱內容】1.通信基礎 (1) 信道、信號、帶寬、碼元、波特、速率、信源與信宿等基本概念 (2) 奈奎斯特定理與香農定理 (3) 編碼與調制 (4) 電路交換、報文交換與分組交換 (5) 數據報與虛電路2.傳輸介質 (1) 雙絞線、同軸電纜、光纖與無線傳輸介質&#xff1b;(2…

2025-08-09通過授權碼的方式給exe程序充值

2025-08-09通過授權碼的方式給exe程序充值主要點&#xff1a; 一次性授權機制&#xff1a; 新增 .used_licenses 文件記錄所有已使用的授權碼 每次激活前檢查授權碼是否在已使用列表中 激活成功后立即將授權碼標記為已使用 時效性驗證&#xff1a; 授權碼包含過期時間戳&#x…