大家好;
在做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.
一周热门 更多>