欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

詳解STM32定時器捕獲功能

CHANBAEK ? 來源:不懂幽默的秦二 ? 作者:diandianmo ? 2023-01-12 17:24 ? 次閱讀

一、STM32定時器捕獲功能

STM32的定時器是支持信號輸入捕獲的,何為輸入捕獲?主要做什么應用?

輸入捕獲:通過檢測TIMx_CHx上的邊沿信號,在邊沿信號發(fā)生跳變的時候,將當前的定時器的值(TIMx_CNT)存放到對應的捕獲比較寄存器里面,完成一次捕獲。輸入捕獲主要應用于測量信號的脈寬或頻率。

下圖是定時器原理圖的輸入捕獲框圖部分

圖片

第一部分是設置濾波器,用來對信號進行濾波,信號從TI1輸入,通過濾波器,輸出TIF信號,正常情況下信號沒有抖動,TI1F信號等于TI1的輸入信號。

ICF[3:0]用來設置輸入采樣頻率的數(shù)字濾波器的長度,如ICF=0011,會在捕獲上升沿時,以fCK_INT的頻率連續(xù)采樣八次通道1的信號電平,若都為高電平,則說明這是一個有效的觸發(fā),就會觸發(fā)捕獲中斷,這樣就可以濾除那些高電平低于八個采樣周期的脈沖信號,達到濾波的效果,如果不做濾波處理,設置為ICF=0000,只要檢測到跳邊沿,就會觸發(fā)捕獲。

在TIMx捕獲/比較模式寄存器(TIMx_CCMR1)的位7:4

圖片

fDTS頻率根據(jù)TIMx_CR1的CKD[1:0]設置

位9:8 CKD:時鐘分頻,此位域指示定時器時鐘(CK_INT)頻率與數(shù)字濾波器所使用的采樣時鐘(ETR、TIx)之間的分頻比。

圖片

第二部分:設置輸入捕獲極性:配置邊沿檢測器檢測上升沿還是下降沿。在TIMx捕獲/比較使能寄存器(TIMx_CCER)的

圖片

第三部分:設置輸入捕獲映射通道:通道一信號也可以映射到通道二上,同理通道二信號也可以映射到通道一上。在TIMx捕獲/比較模式寄存器(TIMx_CCMR1)的

圖片

第四部分:設置輸入輸出捕獲分頻器,就是設置檢測到幾次跳變后觸發(fā)捕獲。在TIMx捕獲/比較模式寄存器(TIMx_CCMR1)的

圖片

同時要開啟輸入捕獲1使能,在TIMx捕獲/比較使能寄存器(TIMx_CCER)的

圖片

第五部分:捕獲到有效信號開啟中斷。在DMA/中斷使能寄存器(TIMx_DIER)

圖片

二、輸入捕獲配置步驟

輸入捕獲配置的一般步驟

① 初始化定時器和通道對應IO的時鐘。

② 初始化IO口,模式為復用:

③設置引腳復用映射:

④初始化定時器ARR,PSC

⑤初始化輸入捕獲通道

⑥如果要開啟捕獲中斷,

⑦使能定時器:

⑧編寫中斷服務函數(shù):

三、輸入捕獲編程

以TIM5_CH1為例,

//定時器5通道1輸入捕獲配置
//arr:自動重裝值(TIM5是32位)
//psc:時鐘預分頻數(shù)
void TIM5_CH1_Cap_Init(u32 arr,u16 psc)
{     
  RCC->APB1ENR|=1<<3;     //TIM5 時鐘使能 
  RCC->AHB1ENR|=1<<0;     //使能PORTA時鐘  
  GPIO_Set(GPIOA,PIN0,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PD);//復用功能,下拉
  GPIO_AF_Set(GPIOA,0,2);  //PA0,AF2
  TIM5->ARR=arr;      //設定計數(shù)器自動重裝值   
  TIM5->PSC=psc;      //預分頻器 
  TIM5->CCMR1|=1<<0;    //CC1S=01   選擇輸入端 IC1映射到TI1上
  TIM5->CCMR1|=0<<4;     //IC1F=0000 配置輸入濾波器 不濾波
  TIM5->CCMR1|=0<<10;   //IC1PS=00   配置輸入分頻,不分頻 
  TIM5->CCMR1|=1<<0;    //CC1S=01   選擇輸入端 IC1映射到TI1上
  TIM5->CCER|=0<<1;     //CC1P=0  上升沿捕獲
  TIM5->CCER|=1<<0;     //CC1E=1   允許捕獲計數(shù)器的值到捕獲寄存器中
  TIM5->EGR=1<<0;      //軟件控制產(chǎn)生更新事件,使寫入PSC的值立即生效,否則將會要等到定時器溢出才會生效!
  TIM5->DIER|=1<<1;     //允許捕獲1中斷        
  TIM5->DIER|=1<<0;     //允許更新中斷  
  TIM5->CR1|=0x01;      //使能定時器2
  MY_NVIC_Init(2,0,TIM5_IRQn,2);//搶占2,子優(yōu)先級0,組2

中斷服務函數(shù):

//中斷服務函數(shù)
//捕獲狀態(tài),定義一個u8變量TIM5CH1_CAPTURE_STA,表示輸入捕獲狀態(tài)
//[7]:0,沒有成功的捕獲;1,成功捕獲到一次.
//[6]:0,還沒捕獲到低電平(下降沿);1,已經(jīng)捕獲到低電平(下降沿)了.
//[5:0]:捕獲高電平后溢出的次數(shù)(對于32位定時器來說,1us計數(shù)器加1,溢出時間:4294秒)
u8  TIM5CH1_CAPTURE_STA=0;                  //輸入捕獲狀態(tài)                
u32  TIM5CH1_CAPTURE_VAL;                   //輸入捕獲值(TIM5是32位)
//定時器5中斷服務程序   
void TIM5_IRQHandler(void)
{         
  u16 tsr;
  tsr=TIM5->SR;
   if((TIM5CH1_CAPTURE_STA&0X80)==0)        //還未成功捕獲  
  {
    if(tsr&0X01)                            //溢出
    {       
      if(TIM5CH1_CAPTURE_STA&0X40)          //定時器溢出,說明已經(jīng)捕獲到上升沿,本次捕獲的是下降沿
      {
        if((TIM5CH1_CAPTURE_STA&0X3F)==0X3F)//高電平太長了
        {
          TIM5CH1_CAPTURE_STA|=0X80;        //標記成功捕獲了一次
          TIM5CH1_CAPTURE_VAL=0XFFFFFFFF;
        }else TIM5CH1_CAPTURE_STA++;
      }   
    }
    if(tsr&0x02)                      //CH1發(fā)生捕獲事件,已經(jīng)捕獲到上升沿,TIMx_CCR1中已捕獲到計數(shù)器值(IC1上已檢測到與所選極性匹配的邊沿)
    {  
      if(TIM5CH1_CAPTURE_STA&0X40)    //CC1IF為1,說明已經(jīng)捕獲到了上升沿(第一次捕獲上升沿參考else),本次捕獲到的是下降沿     
      {          
        TIM5CH1_CAPTURE_STA|=0X80;    //標記成功捕獲到一次高電平脈寬
          TIM5CH1_CAPTURE_VAL=TIM5->CCR1;  //獲取當前的捕獲值.CCR1為上一個輸入捕獲1事件(IC1)發(fā)生時的計數(shù)器的值
         TIM5->CCER&=~(1<<1);         //CC1P=0 設置為上升沿捕獲,為下一次捕獲做準備
      }else                           //還未開始,第一次捕獲上升沿
      {
        TIM5CH1_CAPTURE_STA=0;        //清空
        TIM5CH1_CAPTURE_VAL=0;        //捕獲值清零
        TIM5CH1_CAPTURE_STA|=0X40;    //標記捕獲到了上升沿
        TIM5->CR1&=~(1<<0)    ;       //使能定時器2
         TIM5->CNT=0;                 //計數(shù)器清空
         TIM5->CCER|=1<<1;            //CC1P=1 設置為下降沿捕獲
        TIM5->CR1|=0x01;              //使能定時器2
      }        
    }                              
   }
  TIM5->SR=0;//清除中斷標志位   
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5368

    瀏覽量

    121244
  • STM32
    +關注

    關注

    2272

    文章

    10925

    瀏覽量

    357732
  • 編程
    +關注

    關注

    88

    文章

    3638

    瀏覽量

    94023
  • 定時器
    +關注

    關注

    23

    文章

    3256

    瀏覽量

    115423
  • 捕獲
    +關注

    關注

    0

    文章

    7

    瀏覽量

    2440
收藏 人收藏

    評論

    相關推薦

    STM32定時器(三)輸入捕獲

    STM32定時器是支持信號輸入捕獲的,何為輸入捕獲?主要做什么應用?
    的頭像 發(fā)表于 07-21 14:58 ?4653次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>定時器</b>(三)輸入<b class='flag-5'>捕獲</b>

    stm32定時器pwm模式輸入捕獲功能

    stm32定時器pwm模式輸入捕獲##stm32中的定時器,除了TIM6和TIM7,其他定時器
    發(fā)表于 08-18 07:41

    STM32 --通用定時器輸入捕獲功能 精選資料推薦

    問題:開始的時候沒有搞清楚 定時器時基 于 定時器溢出中斷導致在計算的時候一直有問題。開始并沒有懷疑是配置有問題,因為之前接觸過定時器輸入捕獲功能
    發(fā)表于 08-19 06:34

    從應用方面詳解STM32定時器輸入捕獲模式

    從應用來說STM32定時器輸入捕獲模式前言原理輸入捕獲初始化程序中斷函數(shù)和處理函數(shù)前言我們知道,STM32
    發(fā)表于 01-06 07:37

    STM32如何使用定時器捕獲功能捕獲紅外時序?

    STM32如何使用定時器捕獲功能捕獲紅外時序?
    發(fā)表于 02-09 07:00

    stm32定時器輸入捕獲

    不同頻率、不同占空比的方波信號、PWM信號,同時做為輸入捕獲功能時,可以測量脈沖寬度、實現(xiàn)電容按鍵檢測等等。 一、輸入捕獲概念 輸入捕獲模式可以用來測量脈沖寬度或者測量頻率。
    發(fā)表于 10-13 09:13 ?2.4w次閱讀
    <b class='flag-5'>stm32</b><b class='flag-5'>定時器</b>輸入<b class='flag-5'>捕獲</b>

    基于STM32定時器輸入捕獲解析

    輸入捕獲模式可以用來測量脈沖寬度或者測量頻率。STM32定時器,除了TIM6和TIM7,其他定時器都有輸入捕獲
    發(fā)表于 09-04 11:00 ?6072次閱讀

    stm32 定時器 捕獲

    輸入捕獲模式可以用來測量脈沖寬度或者測量頻率。STM32定時器,除了TIM6和TIM7,其他定時器都有輸入捕獲
    發(fā)表于 09-08 17:07 ?2441次閱讀

    基于STM32定時器捕獲測量脈寬的應用示例

    我們知道,利用單片機定時器捕獲功能測量脈沖信號寬度及占空比是種很常見的做法。這里以STM32定時器為例來介紹基于其
    的頭像 發(fā)表于 01-02 18:17 ?1.3w次閱讀
    基于<b class='flag-5'>STM32</b><b class='flag-5'>定時器</b><b class='flag-5'>捕獲</b>測量脈寬的應用示例

    [STM32]通用定時器的使用

    STM32的通用定時器定時、輸出PWM功能的使用本次還是使用發(fā)光二極管來驗證定時器的使用目錄STM32
    發(fā)表于 11-22 19:06 ?24次下載
    [<b class='flag-5'>STM32</b>]通用<b class='flag-5'>定時器</b>的使用

    STM32定時器-基本定時器

    目錄定時器分類基本定時器功能框圖講解基本定時器功能時鐘源計數(shù)時鐘計數(shù)
    發(fā)表于 11-23 18:21 ?31次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>定時器</b>-基本<b class='flag-5'>定時器</b>

    基于定時器捕獲測量脈寬的應用示例

    我們知道,利用單片機定時器捕獲功能測量脈沖信號寬度及占空比是種很常見的做法。這里以STM32定時器為例來介紹基于其
    發(fā)表于 11-26 16:36 ?9次下載
    基于<b class='flag-5'>定時器</b><b class='flag-5'>捕獲</b>測量脈寬的應用示例

    STM32定時器輸入捕獲實驗

    概述輸入捕獲模式可以用來測量脈沖寬度或者測量頻率。STM32定時器,除了 TIM6 和 TIM7,其他定時器都有輸入捕獲
    發(fā)表于 12-14 18:58 ?20次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>定時器</b>輸入<b class='flag-5'>捕獲</b>實驗

    stm32捕獲占空比_【話說定時器系列】之六:STM32定時器輸入捕獲話題

    TIMER 的基本應用原理、常規(guī)應用等?,F(xiàn)在將課程內(nèi)容整理為文章,針對STM32定時器有基本了解的用戶,分享具體的應用實現(xiàn)環(huán)節(jié)及常見問題解決。STM32定時器除了基本計數(shù)
    發(fā)表于 12-27 19:02 ?2次下載
    <b class='flag-5'>stm32</b><b class='flag-5'>捕獲</b>占空比_【話說<b class='flag-5'>定時器</b>系列】之六:<b class='flag-5'>STM32</b><b class='flag-5'>定時器</b>輸入<b class='flag-5'>捕獲</b>話題

    stm32捕獲占空比_「話說定時器系列」之六:STM32定時器輸入捕獲話題

    TIMER 的基本應用原理、常規(guī)應用等?,F(xiàn)在將課程內(nèi)容整理為文章,針對STM32定時器有基本了解的用戶,分享具體的應用實現(xiàn)環(huán)節(jié)及常見問題解決。STM32定時器除了基本計數(shù)
    發(fā)表于 12-27 19:02 ?8次下載
    <b class='flag-5'>stm32</b><b class='flag-5'>捕獲</b>占空比_「話說<b class='flag-5'>定時器</b>系列」之六:<b class='flag-5'>STM32</b><b class='flag-5'>定時器</b>輸入<b class='flag-5'>捕獲</b>話題