STM32 關於定時器的問題

最近在做STM32定時器輸出PWM波時,碰到一個問題記錄一下。

由於要輸出 2Hz 的PWM波形,PWM引腳使用定時器 TIM1輸出波形,TIM1定時器設定爲0分頻,查看函數傳參爲32位數據,查看定時器溢出寄存器ARR爲32位寄存器,因此計算所得溢出值可以滿足要求,ARR的值應該爲83999999。

                         

                                                                    圖1    32位的數據參數

                                                                                 圖2     32位的寄存器

        但是設置後,通過示波器測量的PWM頻率並不是2Hz,而是達到了3K左右。

        添加了調試信息,如下:

        

        測試時, 得到如下調試信息:

        

        這就已經很明顯了,我設置的參數爲41999999,而實際ARR寄存器的值爲56959;設置的參數值爲83999999,實際ARR的值爲48383,。最有可能的就是ARR寄存器的值捨棄了高16位數據,通過計算器可以看出:

        通過計算器可以看出,ARR寄存器的值,僅僅只有16位的數據,而STM32上函數傳參32位,寄存器標註32位,實際只有16位。

 

       

查看手冊,定時器確實只有16位,因此大家使用時一定要注意,別像我這樣犯這種低級的錯誤。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章