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

查看: 2306|回复: 1

我用的是STM32L15系列的单片机,程序一直进不到捕获中断里

[复制链接]

1

主题

0

回帖

0

蝴蝶豆

新手上路

最后登录
2018-1-9
发表于 2013-6-19 16:44:02 | 显示全部楼层 |阅读模式
   void TIM_Input_Cap(void)
{
        TIM_TimeBaseInitTypeDef TIM_BaseInitStructure; //¶¨ÒåÁ½¸ö½á¹¹Ìå±äÁ¿
        TIM_ICInitTypeDef TIM_ICInitStructure;
        GPIO_InitTypeDef  GPIO_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
       
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//ʹÄܶ¨Ê±Æ÷ʱÖÓ
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
 // RCC_APB2PeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE); // ??AFIO??
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
        GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_TIM3);
       
  TIM_BaseInitStructure.TIM_Period = 1000;       //0.1s   //¼ÆÊý³¤¶È
  TIM_BaseInitStructure.TIM_Prescaler = 0;   //0.1ms
  TIM_BaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
  TIM_BaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
        TIM_ARRPreloadConfig(TIM3, DISABLE);// ?? ARR?????? 
  TIM_TimeBaseInit(TIM3, &TIM_BaseInitStructure);   //³õʼ»¯²ÎÊý       
  TIM_ClearFlag(TIM3, TIM_FLAG_Update);
  TIM_ITConfig( TIM3, TIM_IT_Update, DISABLE );
 
  TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;                     //????1
  TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Falling;       //???????  
  TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;   // ??????   
  TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;               //????????????????
  TIM_ICInitStructure.TIM_ICFilter = 0x6;     
 
 TIM_ICInit(TIM3, &TIM_ICInitStructure);
       
  TIM_SelectInputTrigger(TIM3, TIM_TS_TI1FP1);   
        TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset);  
        TIM_SelectMasterSlaveMode(TIM3, TIM_MasterSlaveMode_Enable); 
       
  TIM_ClearFlag( TIM3, TIM_FLAG_CC1 );
        TIM_ARRPreloadConfig(TIM3, ENABLE);
 
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);       
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;   //????
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;   //?????0
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;          //?????1
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;             //????
NVIC_Init(&NVIC_InitStructure);                             //????
 
        TIM_Cmd(TIM3,ENABLE);   //´ò¿ªÖжϠ      
 TIM_ITConfig(TIM3, TIM_IT_CC1, ENABLE); //ʹÄÜÖжÏ
}
 
void TIM3_IRQHandler(void)
{
        TIM_ClearITPendingBit(TIM3, TIM_IT_CC1);
  /* Get the Input Capture value */
  //capture_number = TIM_GetCapture2(TIM2);
                 capture_number=capture_number+1;
                 if(capture_number>3000) {capture_number1=capture_number1+1; capture_number =0;}
     if(capture_number1>60) {capture_number1 =0;}
 
}
我用的是STM32L15系列的单片机,程序一直进不到捕获中断里,当我把
TIM_Cmd(TIM3,ENABLE);   //´ò¿ªÖжϠ      
 TIM_ITConfig(TIM3, TIM_IT_CC1, ENABLE); //ʹÄÜÖжÏ
改为
TIM_Cmd(TIM3,ENABLE);   //´ò¿ªÖжϠ      
 TIM_ITConfig(TIM3, TIM_IT_CC2, ENABLE); //ʹÄÜÖжÏ
时,当不给输入波形,它又会自动进入中断,不知道出了什么问题,请哪位高手能给个解答吧,已经好几天都这种情况了。
回复

使用道具 举报

24

主题

591

回帖

0

蝴蝶豆

中级会员

最后登录
2020-12-2
发表于 2013-6-19 20:43:25 | 显示全部楼层

RE:我用的是STM32L15系列的单片机,程序一直进不到捕获中断里

把这个TIM_ClearFlag( TIM3, TIM_FLAG_CC1 );移到初始化后面看看。
回复 支持 反对

使用道具 举报

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