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