请教,使用STM8S无法定时器捕获输入,无法进入中断?

2019-07-19 20:46发布

本帖最后由 TZ技术 于 2017-6-17 19:17 编辑

使用STM8S003F3P6定时器捕获,无法进入捕获中断
[mw_shl_code=c,true]#pragma vector=14
__interrupt void TIM2_CAP_COM_IRQHandler(void)
{
      uint16_t data;

    if(TIM2_SR1&0x04)  //捕获2发生捕获事件
       {         
            TIM2_SR1&=(0<<2);//清除捕获中断标志位
            TIM2_SR2&=0<<2 ;   // 清除重复捕获标志   
            data=(TIM2_CCR2H<<8)+TIM2_CCR2L;
           printf("通道2发送捕获中断 ");
         
    }
}


//定时器2.输入捕获初始化代码
//输入捕获计数频率: Fmaster/(2^psc)
//输入捕获最大值:arr
//psc:分配系数,0~15;分频系数为:2^psc,最大为2^15=32768分频
//arr:自动重装载值,0~65535
void capture_init(u8 psc,u16 arr)
{

        CLK_PCKENR1|=1<<5;        //开启TIM2时钟
        
        PD_DDR&=(0<<3);//设置为输入模式
        PD_CR1|=1<<3;//设置为上拉输入
        PD_CR2&=(0<<3);//不使用中断
   
        
        TIM2_PSCR=psc;                //2^psc次方分频
        TIM2_ARRH=(arr>>8);        //必须先设置ARR的高字节
        TIM2_ARRL=arr;//再设置低字节
        TIM2_CCER1 &=0<<4;//禁止输入捕获通道2
        TIM2_CCMR2|=0x01;//CC2映射在TI2FP2上,无预分频,无滤波,Fmaster采样.

        TIM2_CCER1|=1<<5;//IC2上升沿
        TIM2_CCER1|=1<<4;//IC2输入捕获使能,

        TIM2_SR1 &=0<<2;   // 清除捕获标志
        TIM2_SR2 &=0<<2 ;   // 清除重复捕获标志
        TIM2_CR1|=1<<7;        //预装载使能
        TIM2_IER|=1<<2;        //通道2,通道1,捕获中断使能
        TIM2_CR1|=1<<0;//使能TIM2         
      
}
[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。