初级会员

- 积分
- 159
- 金钱
- 159
- 注册时间
- 2015-3-9
- 在线时间
- 22 小时
|
void PWM_Config_X7_Laser(int TIME_Pulse) //20160120
{
GPIO_InitTypeDef GPIO_InitStructure4;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure3;
TIM_OCInitTypeDef TIM_OCInitStructure3;
// TIM_BDTRInitTypeDef TIM_BDTRInitStructure2;
//第一步:配置时钟
//RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //20151225
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //20151225
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
//第二步,配置goio口
/********PA2 TIM2_CH3 引脚配置*********/
GPIO_InitStructure4.GPIO_Pin=GPIO_Pin_0 |GPIO_Pin_1; //CH1 和 CH2
GPIO_InitStructure4.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure4.GPIO_Mode=GPIO_Mode_AF_PP; //设置为复用推挽输出
GPIO_Init(GPIOB,&GPIO_InitStructure4);
GPIO_InitStructure4.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure4.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure4.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure4);
//第三步,定时器基本配置
//TIM_InternalClockConfig(TIM3); //20151225,CHECK
TIM_TimeBaseStructure3.TIM_Period=999; //1000-1; //波形周期 每计2000个数就产生一个更新事件 // 自动重装载寄存器的值
TIM_TimeBaseStructure3.TIM_Prescaler=71; //7; //预分频系数 最大65536 ;//TIM_Prescaler=(72M/xHz)-1 这样计数器时钟为72MHz/36000=2kHz //20151225,CHECK
TIM_TimeBaseStructure3.TIM_ClockDivision=TIM_CKD_DIV1; //采样分频 ,设置时钟分割;
TIM_TimeBaseStructure3.TIM_CounterMode=TIM_CounterMode_Up; //向上计数
TIM_TimeBaseStructure3.TIM_RepetitionCounter=0; //重复寄存器,用于自动更新pwm占空比
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure3); //将配置应用到TIM2中
// TIM_ClearFlag(TIM2, TIM_FLAG_Update); //清除溢出中断标志
// TIM_ARRPreloadConfig(TIM2, DISABLE); //禁止ARR预装载缓冲器
// TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE); //开启TIM2的中断
//第四步pwm输出配置
TIM_OCInitStructure3.TIM_OCMode=TIM_OCMode_PWM1; //设置为pwm1输出模式
TIM_OCInitStructure3.TIM_Pulse=TIME_Pulse; //hkhu 450; //设置占空比时间
TIM_OCInitStructure3.TIM_OCPolarity=TIM_OCPolarity_High;//Low; //设置输出极性
TIM_OCInitStructure3.TIM_OutputState=TIM_OutputState_Enable; //使能该通道输出 比较输出使能
TIM_OC1Init(TIM3,&TIM_OCInitStructure3); //按照指定参数初始化
//第五步,使能端的打开
TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能TIMx在CCR1上的预装载寄存器
TIM_OC2Init(TIM3, &TIM_OCInitStructure3);
TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);
TIM_OC3Init(TIM3, &TIM_OCInitStructure3);
TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable);
TIM_OC4Init(TIM3, &TIM_OCInitStructure3);
TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable);
TIM_ARRPreloadConfig(TIM3, ENABLE); //使能TIMx在ARR上的预装载寄存器
TIM_Cmd(TIM3,ENABLE); //打开TIM2
}
|
|