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

TIM1slaveTIM3,TIM3使用pwm比较模式,却无法进入中断忘大佬解答

[复制链接]
sam2chen 提问时间:2017-11-23 15:10 /
悬赏1ST金币已解决
#include "timer.h"
#include "stm32f10x.h"

extern u16 ccr1;


void TIM3_IRQHandler(void)   //TIM3ÖжÏ
{
        if (TIM_GetITStatus(TIM3, TIM_IT_CC1) != RESET) //¼ì²éÖ¸¶¨µÄTIMÖжϷ¢ÉúÓë·ñ:TIM ÖжÏÔ´
                {
                TIM_ClearITPendingBit(TIM3, TIM_IT_CC1  );  //Çå³ýTIMxµÄÖжϴý´¦Àíλ:TIM ÖжÏÔ´
                        if(ccr1<5000)
                        {
                                ccr1=ccr1+500;
                               
                        }
                        else ccr1=999;
                               
                        TIM_SetCompare1(TIM3,ccr1);
                       
        }
}

void TIM13_Configuration(void)
{
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_OCInitTypeDef  TIM_OCInitStructure;
       
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1 , ENABLE);

  /* TIM3 and TIM4 clock enable */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
       
        TIM_TimeBaseStructure.TIM_Period = 5559;
  TIM_TimeBaseStructure.TIM_Prescaler =0;
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
       
        GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE);
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle;
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
  TIM_OCInitStructure.TIM_Pulse = 499;
       
       
       
        TIM_ClearFlag(TIM3, TIM_FLAG_CC1);
  TIM_ITConfig(TIM3,TIM_IT_CC1,ENABLE);//ÖжÏʹÄÜ
       

  TIM_OC1Init(TIM3, &TIM_OCInitStructure);
        TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Disable);
       
       
         

  /* Slave Mode selection: TIM3 */
  TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Trigger);
  TIM_SelectInputTrigger(TIM3, TIM_TS_ITR0);
       
       
        TIM_TimeBaseStructure.TIM_Prescaler = 0;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseStructure.TIM_Period = 255;
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_RepetitionCounter = 4;

  TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);

  /* Channel 1 Configuration in PWM mode */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
  TIM_OCInitStructure.TIM_Pulse = 127;
       
        TIM_OC1Init(TIM1, &TIM_OCInitStructure);
       
       
        GPIO_PinRemapConfig(GPIO_FullRemap_TIM1, ENABLE);
       
       
        TIM_SelectOutputTrigger(TIM1, TIM_TRGOSource_Update);

  /* Select the Master Slave Mode */
  TIM_SelectMasterSlaveMode(TIM1, TIM_MasterSlaveMode_Enable);

  /* TIM1 counter enable */
  TIM_Cmd(TIM1, ENABLE);

  /* TIM enable counter */
  TIM_Cmd(TIM3, ENABLE);


  /* Main Output Enable */
  TIM_CtrlPWMOutputs(TIM1, ENABLE);




}

void GPIO_Configuration(void)
{
       
        GPIO_InitTypeDef GPIO_InitStructure;
       
        RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOE |RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE);
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_8;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOE, &GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOC, &GPIO_InitStructure);
}

void NVIC_Configuration(void)
{
        NVIC_InitTypeDef NVIC_InitStructure;
        NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;//ʹÄÜÖжÏ
       
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
        NVIC_Init(&NVIC_InitStructure);

}

       
       



最佳答案

查看完整内容

你不打开比较中断有什么可能会中断? TIM_ITConfig(TIM1, TIM_IT_CC1,ENABLE);//使能或者失能指定的TIM中断 这个没打开吧?
收藏 1 评论7 发布时间:2017-11-23 15:10

举报

7个回答
ts2000 回答时间:2017-11-23 15:10:49
你不打开比较中断有什么可能会中断?
TIM_ITConfig(TIM1, TIM_IT_CC1,ENABLE);//使能或者失能指定的TIM中断
这个没打开吧?

评分

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

查看全部评分

sam2chen 回答时间:2017-11-23 15:13:28
试过其它pwm模式,都是无法进入中断,无法更改比较值和溢出值,即arr和ccr值,在slave模式下是不是还要做一些其它命令设定或是修改,忘大佬解答
wudianjun2001 回答时间:2017-12-12 10:44:59
单步运行下看寄存器的值是否正常,计数器到后状态位是否有变化
ts2000 回答时间:2017-12-12 11:33:20
你不打开比较中断有什么可能会中断?
TIM_ITConfig(TIM1, TIM_IT_CC1,ENABLE);//使能或者失能指定的TIM中断
这个没打开吧?
wolfgang2015 回答时间:2017-12-12 11:41:04
的确,不能中断,就要看中断是否打开,如果被mark掉,是不会进入中断的。

评分

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

查看全部评分

wenyangzeng 回答时间:2017-12-12 13:18:48
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1 , ENABLE);
好像只打开TIM1,TIM3未启动。

评分

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

查看全部评分

无薪税绵 回答时间:2017-12-12 14:18:13

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版