你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
ssyx1234 提问时间:2016-9-21 19:53 /
#include "bsp_spwm_output.h"
uint16_t  CCR1_Val ;
uint16_t  CCR2_Val = 1500 ;
uint16_t  CCR3_Val = 900;
static void TIM1_Mode_Config(void)
{
   
  GPIO_InitTypeDef GPIO_InitStructure;
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    TIM_OCInitTypeDef  TIM_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();
} // /*****/     

收藏 1 评论8 发布时间:2016-9-21 19:53

举报

8个回答
xmshao 回答时间:2016-9-22 08:11:45
你注意到底是触发中断  还是捕捉中断;
另外 你到底是哪个STM32型号,注意启动文件的一致性;

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

ssyx1234 回答时间:2016-9-22 08:15:58
触发中断,我用TIM2可以,TIM1就不行,不知道哪里出问题了。。。
chenbourne 回答时间: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
,你上面的代码不是把TIMER1配置成了PWM模式了吗?
hjl2832 回答时间:2016-9-22 13:46:58
既不是定时模式,也不是计数模式,更不是输入捕获。
ly499574529 回答时间:2016-9-22 13:54:02
看看函数名与.S的对的起不

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版