stm32pwm疑问中的TIM_OCMode_Toggle疑问

2019-07-21 00:29发布

大家好;
       在做pwm的时候发现一个现象,心存疑惑:
        TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1;//目前TIM3的时钟是36m
        TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;//向下计数
        TIM_TimeBaseInitStruct.TIM_Period=72-1; //这个是预装载值arr ,也就是定时时间,一个时钟0.5us,向下计数值200就是定时0.1ms=10k
        TIM_TimeBaseInitStruct.TIM_Prescaler=72-1;//36m的时钟72分频=0.5mhz,这个就是psc
        //TIM_TimeBaseInitStruct.TIM_RepetitionCounter=//这个选项是高级定时器才会用到
        TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStruct);//输出频率=定时器溢出周期的倒数
       
        //TIM_OCInitStruct.TIM_OCIdleState=//高级定时器才需要配置这个选项
        //TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1;//pwm模式1输出
        TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_Toggle;//TIM_OCMode_Toggle输出
        //TIM_OCInitStruct.TIM_OCNIdleState=//高级定时器才需要配置这个选项
        //TIM_OCInitStruct.TIM_OCNPolarity=//高级定时器才需要配置这个选项
        TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_High;//高电平有效
        //TIM_OCInitStruct.TIM_OutputNState=//高级定时器才需要配置这个选项
        TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;//使能比较输出
        TIM_OCInitStruct.TIM_Pulse=2;//这个是ccr,占空比=ccr/arr,
        TIM_OC1Init(TIM3,&TIM_OCInitStruct);//TIM3的通道1-PA6

我的理解是这样的不知道对不对:
在 TIM_OCMode_PWM1模式下TIM_Period 这个是影响ARR寄存器会影响pwm的频率。TIM_Pulse这个是影响CCR寄存器,影响的是占空比
不过在TIM_OCMode_Toggle模式下,一旦ARR寄存器的值小于或等于CCR寄存器的值得时候,发现pwm波形就停止了,没有波形了。
我看芯片介绍是CCR《ARR寄存器,但是在这个TIM_OCMode_Toggle模式下CCR寄存器起到了什么作用?好像这个值已经不起作用,占空比是百分之50.
0条回答

一周热门 更多>