打印
[STM32F0]

使能通道1后,CCER寄存器的CC1E位一直在变

[复制链接]
886|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yaokeq|  楼主 | 2017-10-20 09:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使能通道1TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Enable)后,CCER寄存器的CC1E位一直在变,大神们有遇到这种情况吗?
TIM1配置:
void TIM_PWM_Config(void)
{
TIM_TimeBaseInitTypeDef TIM_InitStruct;
TIM_OCInitTypeDef       TIM_OCInitStruct;
TIM_BDTRInitTypeDef     TIM_BDTRInitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_TIM1, ENABLE);
TIM_DeInit(TIM1);

TIM_InitStruct.TIM_Period             = period;
TIM_InitStruct.TIM_Prescaler          = 0;
TIM_InitStruct.TIM_CounterMode        = TIM_CounterMode_Up;
TIM_InitStruct.TIM_ClockDivision      = TIM_CKD_DIV1;
TIM_InitStruct.TIM_RepetitionCounter  = 0;
TIM_TimeBaseInit(TIM1,&TIM_InitStruct);
TIM_ARRPreloadConfig(TIM1,ENABLE);

  TIM_OCInitStruct.TIM_OCMode           = TIM_OCMode_PWM1;
TIM_OCInitStruct.TIM_OutputState      = TIM_OutputState_Enable;
TIM_OCInitStruct.TIM_OutputNState   = TIM_OutputNState_Enable;
TIM_OCInitStruct.TIM_Pulse       = duty;
TIM_OCInitStruct.TIM_OCPolarity     = TIM_OCPolarity_High;
TIM_OCInitStruct.TIM_OCNPolarity    = TIM_OCNPolarity_Low;
TIM_OCInitStruct.TIM_OCIdleState    = TIM_OCIdleState_Reset;
TIM_OCInitStruct.TIM_OCNIdleState    = TIM_OCNIdleState_Set;

TIM_OC1Init(TIM1,&TIM_OCInitStruct);
TIM_OC2Init(TIM1,&TIM_OCInitStruct);
TIM_OC3Init(TIM1,&TIM_OCInitStruct);

// TIM_BDTRInitStructure.TIM_OSSRState=TIM_OSSRState_Enable;
// TIM_BDTRInitStructure.TIM_OSSIState=TIM_OSSIState_Enable;
// TIM_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_OFF;
// TIM_BDTRInitStructure.TIM_DeadTime=0x00;
// TIM_BDTRInitStructure.TIM_Break=TIM_Break_Disable;
// TIM_BDTRInitStructure.TIM_AutomaticOutput=TIM_AutomaticOutput_Enable;
// TIM_BDTRConfig(TIM1,&TIM_BDTRInitStructure);

TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);
TIM_OC2PreloadConfig(TIM1,TIM_OCPreload_Enable);
TIM_OC3PreloadConfig(TIM1,TIM_OCPreload_Enable);
// TIM_ClearITPendingBit(TIM1,TIM_IT_CC1);
TIM_Cmd(TIM1,ENABLE);
TIM_CCPreloadControl(TIM1,DISABLE);
TIM_CtrlPWMOutputs(TIM1,ENABLE);

}
沙发
mmuuss586| | 2017-10-20 10:12 | 只看该作者
那你用示波器看后,实际波形有没有变呢?
可能你程序哪里一直在更新吧;

使用特权

评论回复
板凳
yaokeq|  楼主 | 2017-10-20 10:14 | 只看该作者
实际波形周期从167us变成2.8us

使用特权

评论回复
地板
yaokeq|  楼主 | 2017-10-20 10:49 | 只看该作者
本帖最后由 yaokeq 于 2017-10-20 10:52 编辑

TIM_CCPreloadControl(TIM1,DISABLE);改成ENABLE 后正常,但是TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Disable);无法关闭通道1比较输出

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

37

帖子

1

粉丝