[STM8] STM8S103TIM1进不了捕获中断

[复制链接]
2340|3
 楼主| wyfccf 发表于 2014-4-8 17:58 | 显示全部楼层 |阅读模式
请高手指点一下,看了很多贴子,都是用库函数做的,直接设置的不行吗???
STM8S103F的CH1捕获中断,进不了中断.IO口已经设成输入了.下面是TIM1,有问题吗?求解,开中断了,其它定时中断的都可以进..
        TIM1_IER        =        0X0;
        TIM1_CR1        =        0X01;
        TIM1_CR2        =        0X00;
        TIM1_SMCR        =        0X54;
        TIM1_ETR        =        0;
        TIM1_IER        =        0X2;
        TIM1_CCMR1=        0X01;
        TIM1_CCER1=        0X01;
        TIM1_PSCRH=        00;
        TIM1_PSCRL=        0X10;
        TIM1_ARRH        =        0XFF;
        TIM1_ARRL        =        0XFF;
        TIM1_CR1        =        0X1;
 楼主| wyfccf 发表于 2014-4-8 18:18 | 显示全部楼层
FAQ 发表于 2014-4-8 20:12 | 显示全部楼层

我用的是TIM2的输入捕获功能  硬件管脚为:PD4  TIM2_CH1

设置代码如下,测试可用 ,你大致参考下,里面注释语句可能不对,你只看没有被注释掉的代码就可以了。

  1. void TIM2_Config(void)
  2. {
  3.   
  4.   
  5.    // GPIO_Init(GPIOD,GPIO_PIN_4,GPIO_MODE_IN_PU_NO_IT);//霍尔信号捕获输入
  6.   
  7.    
  8.    
  9.     GPIO_Init(GPIOA,(GPIO_Pin_TypeDef)(GPIO_PIN_1|GPIO_PIN_2),GPIO_MODE_OUT_PP_HIGH_SLOW);//
  10.    
  11.    
  12.    
  13.    
  14.     /* Set the Prescaler value */
  15.     TIM2->PSCR = (uint8_t)(TIM2_PRESCALER);
  16.     /* Set the Autoreload value */
  17.     TIM2->ARRH = (uint8_t)(TIM2_PERIOD >> 8);
  18.     TIM2->ARRL = (uint8_t)(TIM2_PERIOD);
  19.    

  20.     /* TI1 Configuration */

  21.     /* Disable the Channel 1: Reset the CCE Bit */
  22.     TIM2->CCER1 &= (uint8_t)(~TIM2_CCER1_CC1E);

  23.     /* Select the Input and set the filter */
  24.     TIM2->CCMR1  = (uint8_t)((uint8_t)(TIM2->CCMR1 & (uint8_t)(~(uint8_t)( TIM2_CCMR_CCxS | TIM2_CCMR_ICxF )))
  25.                              | (uint8_t)(((TIM2_ICSELECTION_DIRECTTI)) | ((uint8_t)( 0x00 << 4))));

  26.     /* Select the Polarity */

  27.     //TIM2->CCER1 &= (uint8_t)(~TIM2_CCER1_CC1P);//上升沿
  28.     TIM2->CCER1 |= TIM2_CCER1_CC1P;//下降沿

  29.     /* Set the CCE Bit */
  30.     TIM2->CCER1 |= TIM2_CCER1_CC1E;
  31.    
  32.    
  33.    


  34.     /* Reset the IC1PSC Bits &Set the IC1PSC value */
  35.     TIM2->CCMR1 = (TIM2->CCMR1 & 0xF3)| TIM2_ICPSC_DIV1;
  36.     TIM2->CR1 |= 0x01;//使能TIM2

  37.   //  TIM2->CR1 |= 0x04;//  URS 位1:当更新请求使能时,只有计数器溢出才产生更新中断
  38.    
  39.    
  40.    
  41.     /* Enable the Interrupt sources */
  42.     TIM2->IER |= TIM2_IT_CC1;
  43.     TIM2->IER |=TIM2_IT_UPDATE;
  44.    
  45. }


zxc729 发表于 2014-4-8 22:20 来自手机 | 显示全部楼层
Option byte设置了吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

31

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部