alisa123 发表于 2015-6-19 11:57:17

关于stm32的tim1的计数模式

我现在要用TIM1产生频率为20kHz的PWM,我选用TIM1的中央对齐模式:
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_CenterAlignedl;
为了提高定时器的分辨率,直接将72 MHz作为定时器的计数时钟,没有任何预分频。假设PWM频率为frq = 20k,则可以计算时间基的计数值tpwm:
    http://www.21ic.com/d/file/201308/1e00eb7b1ce84691036b7e8243e29ca5.jpg
    TIM_CLOCK是定时器的计数频率,本系统为72 MHz。频率设为20 kHz,则计数器的值则为3600。
问题:那请问我向TIM_TimeBaseStructure.TIM_Period(TIM1_ARR)中应该赋值为1800还是1800-1啊?为什么?求高手帮忙指导

小蚂蚁快溜跑 发表于 2015-6-19 12:19:52

应该是1800-1

风子 发表于 2015-6-19 12:28:57

1800-1    吧

lkl0305 发表于 2015-6-19 13:19:41

重新上个图片吧:D

alisa123 发表于 2015-6-19 13:39:56

lkl0305 发表于 2015-6-19 13:19
重新上个图片吧

你好,图片上面是个计算公式:Tpwm = TIM_CLOCK/(2*frq)

alisa123 发表于 2015-6-19 13:40:52

风子 发表于 2015-6-19 12:28
1800-1    吧

谢谢你的回复,可否帮我分析下1800-1的原因,谢谢

alisa123 发表于 2015-6-19 13:42:18

小蚂蚁快溜跑 发表于 2015-6-19 12:19
应该是1800-1

谢谢你的回复,另外想麻烦你帮我分析下1800-1的原因,谢谢。

风子 发表于 2015-6-19 13:44:53

alisa123 发表于 2015-6-19 13:40
谢谢你的回复,可否帮我分析下1800-1的原因,谢谢

0~1800-1,刚好1800个数,两倍就是3600

JackieLaura 发表于 2015-6-19 13:54:06

楼上正解。

creep 发表于 2015-6-19 13:55:09

对定时器理解不是很多,但是从参考手册上看好像中央对齐模式不需要减1,因为向上和向下都把0计算在内了,但中央对齐好像有点不同。
http://files.note.sdo.com/OMD2T~loeJOq4M2V0000S6
http://files.note.sdo.com/OMD2T~loeJGa4M2V0000S3
http://files.note.sdo.com/OMD2T~loeJVa4M2V0000S7

页: [1] 2 3
查看完整版本: 关于stm32的tim1的计数模式