第十五章 輸入捕獲實驗
上一章,我們介紹了STM32的通用定時器作為PWM輸出的使用方法,這一章,我們將向大家介紹通用定時器作為輸入捕獲的使用。在本章中,我們將用TIM5的通道1(PA0)來做輸入捕獲,捕獲PA0上高電平的脈寬(用WK_UP按鍵輸入高電平),通過串口打印高電平脈寬時間,從本章分為如下幾個部分:
15.1 輸入捕獲簡介
15.2 硬件設計
15.3 軟件設計
15.4 下載驗證
15.1 輸入捕獲簡介輸入捕獲模式可以用來測量脈沖寬度或者測量頻率。STM32的定時器,除了TIM6和TIM7,其他定時器都有輸入捕獲功能。STM32的輸入捕獲,簡單的說就是通過檢測TIMx_CHx上的邊沿信號,在邊沿信號發(fā)生跳變(比如上升沿/下降沿)的時候,將當前定時器的值(TIMx_CNT)存放到對應的通道的捕獲/比較寄存器(TIMx_CCRx)里面,完成一次捕獲。同時還可以配置捕獲時是否觸發(fā)中斷/DMA等。
本章我們用到TIM5_CH1來捕獲高電平脈寬,也就是要先設置輸入捕獲為上升沿檢測,記錄發(fā)生上升沿的時候TIM5_CNT的值。然后配置捕獲信號為下降沿捕獲,當下降沿到來時,發(fā)生捕獲,并記錄此時的TIM5_CNT值。這樣,前后兩次TIM5_CNT之差,就是高電平的脈寬,同時TIM5的計數(shù)頻率我們是知道的,從而可以計算出高電平脈寬的準確時間。
接下來,我們介紹我們本章需要用到的一些寄存器配置,需要用到的寄存器有:TIMx_ARR、TIMx_PSC、TIMx_CCMR1、TIMx_CCER、TIMx_DIER、TIMx_CR1、TIMx_CCR1這些寄存器在前面2章全部都有提到(這里的x=5),我們這里就不再全部羅列了,我們這里針對性的介紹這幾個寄存器的配置。
首先TIMx_ARR和TIMx_PSC,這兩個寄存器用來設自動重裝載值和TIMx的時鐘分頻,用法同前面介紹的,我們這里不再介紹。
再來看看捕獲/比較模式寄存器1:TIMx_CCMR1,這個寄存器在輸入捕獲的時候,非常有用,有必要重新介紹,該寄存器的各位描述如圖15.1.1所示:
圖15.1.1 TIMx_CCMR1寄存器各位描述