stm32pwm设置周期与实际周期不一样?

2019-08-14 00:45发布

配置了pwm输出周期为10ms,占空比为50%,软件仿真时发现占空比波形是对的,但是周期只有6.667ms,这是为什么?





































  TIM_Cmd(TIM2,ENABLE);    TIM_ARRPreloadConfig(TIM2,  ENABLE);  //使能定时器8      TIM_OCInitStructure.TIM_OutputState =TIM_OutputState_Enable;  TIM_OC2PreloadConfig(TIM2,TIM_OCPreload_Enable); //改变占空比后,立即产生效应    TIM_OC2Init(TIM2,&TIM_OCInitStructure);    //PWM_L初始化     //TIM_OCInitStructure.TIM_OCNIdleState=TIM_OCNIdleState_Reset;   //TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_Set;   TIM_OCInitStructure.TIM_OCNPolarity=TIM_OCPolarity_High;//互补输出极性为高电平  //TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low; //输出极性为低电平  TIM_OCInitStructure.TIM_Pulse =360;//设置占空比  //TIM_OCInitStructure.TIM_OutputNState =TIM_OutputState_Disable;//使能反向通道  TIM_OCInitStructure.TIM_OutputState =TIM_OutputState_Enable;//使能正向通道  TIM_OCInitStructure.TIM_OCMode =TIM_OCMode_PWM1;//输出PWM,选择模式  //输出比较模式设置,用于4路PWM输出    TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStructrue);//根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位    //TIM_TimeBaseInitStructrue.TIM_RepetitionCounter =0x0000;  TIM_TimeBaseInitStructrue.TIM_CounterMode =TIM_CounterMode_Up;//TIM向上计数模式  TIM_TimeBaseInitStructrue.TIM_ClockDivision =0;//设置时钟分割:TDTS:Tck_tim  TIM_TimeBaseInitStructrue.TIM_Prescaler =999;//72000000/4000=18K  设置用来作为TIMx时钟频率除数的预分频值  TIM_TimeBaseInitStructrue.TIM_Period =719;//18K/144=125Hz,这个是电机PWM的频率,设置在下一个更新事件    GPIO_Init(GPIOA,&GPIO_InitStructure);  GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;  GPIO_InitStructure.GPIO_Mode =GPIO_Mode_AF_PP;    GPIO_InitStructure.GPIO_Pin =GPIO_Pin_1;  //时间基初始化  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);//使能外设时钟   GPIO_InitTypeDef GPIO_InitStructure;//声明io结构体  TIM_OCInitTypeDef TIM_OCInitStructure;TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructrue;
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。