配置了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;
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>