ssyx1234 发表于 2016-9-21 19:53:51

进不了中断,找 了一天了,求大神指点

#include "bsp_spwm_output.h"
uint16_tCCR1_Val ;
uint16_tCCR2_Val = 1500 ;
uint16_tCCR3_Val = 900;
static void TIM1_Mode_Config(void)
{
   
GPIO_InitTypeDef GPIO_InitStructure;
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    TIM_OCInitTypeDefTIM_OCInitStructure;

    /* GPIOA clocks enable */
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
    /* TIM1 clock enable */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);

    GPIO_InitStructure.GPIO_Pin =GPIO_Pin_9 | GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_Init(GPIOA,&GPIO_InitStructure);

    /* Connect TIM pins to AF6 */
    GPIO_PinAFConfig(GPIOA, GPIO_PinSource8, GPIO_AF_6);
    GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_6);
    GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_6);

    /* Time Base configuration */
   
    TIM_TimeBaseStructure.TIM_Period =2999;      
TIM_TimeBaseStructure.TIM_Prescaler = 0;
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;    //ÉèÖÃÔ¤·ÖƵ£º²»Ô¤·ÖƵ£¬¼´Îª72MHz
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;    //ÉèÖÃʱÖÓ·ÖÆµÏµÊý£º²»·ÖƵ(ÕâÀïÓò»µ½)
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_CenterAligned1;//ÏòÉϼÆÊýģʽ
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);

/*PWM1 Mode configuration: Channel1 */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;      //ÅäÖÃΪPWMģʽ1
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;   
TIM_OCInitStructure.TIM_Pulse = CCR2_Val;       //ÉèÖÃÌø±äÖµ£¬µ±¼ÆÊýÆ÷¼ÆÊýµ½Õâ¸öֵʱ£¬µçƽ·¢ÉúÌø±ä
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//µ±¶¨Ê±Æ÷¼ÆÊýֵСÓÚCCR1_ValʱΪ¸ßµçƽ
    TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;      
    TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;   
    TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Set;

TIM_OC2Init(TIM1, &TIM_OCInitStructure);   //ʹÄÜͨµÀ1
TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Enable);
TIM_ARRPreloadConfig( TIM1,ENABLE);
   
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;   
TIM_OCInitStructure.TIM_Pulse = CCR3_Val;   
TIM_OC3Init(TIM1, &TIM_OCInitStructure);   //ʹÄÜͨµÀ4
TIM_OC3PreloadConfig(TIM1, TIM_OCPreload_Enable);
TIM_ARRPreloadConfig( TIM1,ENABLE);
   
TIM_ARRPreloadConfig( TIM1,ENABLE);
    TIM_UpdateRequestConfig( TIM1, TIM_UpdateSource_Regular);
TIM_ITConfig(TIM1,TIM_IT_Update | TIM_IT_Trigger,ENABLE);/* TIM3 enable counter */
TIM_Cmd(TIM1, ENABLE);   //ʹÄܶ¨Ê±Æ÷3   
    TIM_ClearFlag(TIM1, TIM_FLAG_Update);
    TIM_CtrlPWMOutputs(TIM1, ENABLE);
}

   void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitStructure.NVIC_IRQChannel = TIM1_CC_IRQn;   //TIM1ÖжÏ
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 6;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);      
}         

void TIM1_SPWM_Init(void)
{
   TIM1_Mode_Config();
   NVIC_Configuration();
} // /*****/   

xmshao 发表于 2016-9-22 08:11:45

你注意到底是触发中断还是捕捉中断;
另外 你到底是哪个STM32型号,注意启动文件的一致性;

ssyx1234 发表于 2016-9-22 08:15:58

触发中断,我用TIM2可以,TIM1就不行,不知道哪里出问题了。。。

chen_hang 发表于 2016-9-22 09:50:12

签到签到

高二毛 发表于 2016-9-22 10:07:58

先用TIM1调调定时中断能进去不,先保证配置什么没有问题。

ssyx1234 发表于 2016-9-22 10:49:09

进不去啊!

hjl2832 发表于 2016-9-22 13:45:55

:L,你上面的代码不是把TIMER1配置成了PWM模式了吗?

hjl2832 发表于 2016-9-22 13:46:58

既不是定时模式,也不是计数模式,更不是输入捕获。

ly499574529 发表于 2016-9-22 13:54:02

看看函数名与.S的对的起不
页: [1]
查看完整版本: 进不了中断,找 了一天了,求大神指点