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位,因此大家使用时一定要注意,别像我这样犯这种低级的错误。

 

 

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