新手上路
- 积分
- 46
- 金钱
- 46
- 注册时间
- 2014-7-15
- 在线时间
- 0 小时
|
5金钱
程序如下,看一下是什么问题
/*
******************************************************************************
* 任务名称: TIM1_PWM_Init
* 任务说明: TIM1 PWM部分初始化
* 参数一: 自动重装值
* 参数二: 时钟预分频数
* 返回值: 无
******************************************************************************
*/
void TIM1_PWM_Init(u16 Arr, u16 Psc)
{
GPIO_InitTypeDef GPIO_InitStructure2;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_BDTRInitTypeDef TIM_BDTRInitStructure;
//Timer1完全重映射
GPIO_PinRemapConfig(GPIO_FullRemap_TIM1, ENABLE);
/*配置PWM输出端口 */
/********TIM1_CH1,TIM1_CH1N 引脚配置*********/
GPIO_InitStructure2.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14;
GPIO_InitStructure2.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure2.GPIO_Mode = GPIO_Mode_AF_PP; //设置为复用浮空输出
GPIO_Init(GPIOE, &GPIO_InitStructure2);
/*定时器基本配置 */
TIM_TimeBaseStructure.TIM_Period = Arr; // 自动重装载寄存器的值
TIM_TimeBaseStructure.TIM_Prescaler = Psc; // 时钟预分频数
TIM_TimeBaseStructure.TIM_ClockDivision = 0; // 采样分频
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数 TIM_SelectOnePulseMode
TIM_TimeBaseStructure.TIM_RepetitionCounter = TIM_CounterMode_Down;// 0; //重复寄存器,用于自动更新pwm占空比 /* 重复计数器无效 */ ?????
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
/* PWM正向输出配置 */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //设置为pwm1输出模式
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCNPolarity_Low;//TIM_OCNPolarity_High; //比较输出极性
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //使能该通道输出
TIM_OCInitStructure.TIM_Pulse = 500; //脉冲宽度 TIM_SetCompare1(TIM1, 5000); TIM_OC1Init(TIM1,&TIM_OCInitStructure);
TIM_OC1Init(TIM1,&TIM_OCInitStructure);
TIM_OC2Init(TIM1,&TIM_OCInitStructure);
TIM_OC3Init(TIM1,&TIM_OCInitStructure);
TIM_OC4Init(TIM1,&TIM_OCInitStructure);
// TIM_ClearFlag(TIM1,TIM_FLAG_CC1); //清除中断
// TIM_ClearFlag(TIM1,TIM_FLAG_CC2); //清除中断
// TIM_ClearFlag(TIM1,TIM_FLAG_CC3); //清除中断
// TIM_ClearFlag(TIM1,TIM_FLAG_CC4); //清除中断
TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable); //使能TIMx在CCR1上的预装载寄存器
TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Enable); //使能TIMx在CCR2上的预装载寄存器
TIM_OC3PreloadConfig(TIM1, TIM_OCPreload_Enable); //使能TIMx在CCR3上的预装载寄存器
TIM_OC4PreloadConfig(TIM1, TIM_OCPreload_Enable); //使能TIMx在CCR4上的预装载寄存器
TIM_ARRPreloadConfig(TIM1, ENABLE); //使能TIMx在ARR上的预装载寄存器
// // TIM_ITConfig(TIM1,TIM_IT_CC1 | TIM_IT_CC2 | TIM_IT_CC3 | TIM_IT_CC4, ENABLE);// TIM_IT_Update , ENABLE); //使能更新中断
TIM_Cmd(TIM1,ENABLE); //打开TIM1 //使能TIM外设
/* 输出pwm打开 */
TIM_CtrlPWMOutputs(TIM1, ENABLE); //PWM输出使能,一定要记得打开 //主输出使能
}
|
|