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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值