初级会员

- 积分
- 57
- 金钱
- 57
- 注册时间
- 2015-1-20
- 在线时间
- 3 小时
|
5金钱
哪位兄弟知道 定时器1不能进入中断服务程序 改成定时器2就可以
void PWM_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
//时钟配置;
RCC_APB1PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE); //TIM1时钟配置;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOA,ENABLE); //和GPIOB.6配置;
//CH1输出通道映射配置;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//复用推挽输出;
GPIO_Init(GPIOA,&GPIO_InitStructure);
//TIM初始化
TIM_TimeBaseInitStructure.TIM_Prescaler=7199; //预分频数;
TIM_TimeBaseInitStructure.TIM_Period=9999;//自动重装载寄存器值;
TIM_TimeBaseInitStructure.TIM_ClockDivision=1;
TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;//向上计数模式
TIM_TimeBaseInit(TIM1,&TIM_TimeBaseInitStructure);
//配置比较模式
TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;//PWM1模式;
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//输出使能; 0x
TIM_OCInitStructure.TIM_Pulse=999;
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;//高电平有效;
TIM_OC1Init(TIM1,&TIM_OCInitStructure);
TIM_ARRPreloadConfig(TIM1,ENABLE);
TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable); //ch1通预装载值使能;*/
TIM_ITConfig(TIM1,TIM_IT_Update|TIM_IT_CC1,ENABLE);
TIM_Cmd(TIM1,ENABLE); //开启计数器;
NVIC_InitStructure.NVIC_IRQChannel=TIM1_CC_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x00;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x01;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel=TIM_IT_Update;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x00;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x02;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
void TIM1_UP_IRQHandler(void)
{
TIM_ClearITPendingBit(TIM1, TIM_IT_Update); //清中断
}
void TIM1_CC_IRQHandler(void)
{
TIM_ClearITPendingBit(TIM1, TIM_IT_CC1); //清中断
}
|
|