liuzhu 发表于 2015-6-12 16:10:46

TIM2通道1的比较输出无法进入中断

我的目的是利用TIM2通道1的比较输出模式(翻转模式),在翻转的情况下能产生一个中断,以便在中断内记录翻转的次数。但是发现一直无法进入中断函数TIM2_CC_IRQHandler (void)内。求各位同志帮忙看一下哪里有问题。再次谢过
TIM2通道1的寄存器设置如下:

TIM2_CR1 = TIM2_CR1 | 0x00;
TIM2_CCMR1 = TIM2_CCMR1 | 0x30;        // 通道1被设置为输出比较模式// OC1M = 011
                                                                // 计数器TIM2_CNT的值与捕获/比较寄存器1相同时,翻转
TIM2_CCER1 = TIM2_CCER1 | 0x03;      // CC1P = 1,低电平为有效电平
                                                               // CC1E = 1,开启输出引脚               
TIM2_EGR=TIM2_EGR | 0x02;               //CC1G=1,通道CC1产生中断
TIM2_IER=TIM2_IER | 0x02;                       //允许捕获/比较1中断
TIM2_PSCR = 8;                                    //初始时钟分频为64   
TIM2_CCR1H = 0x7A;                            //初始化比较寄存器
TIM2_CCR1L = 0x12;
TIM2_CNTRH=0;
TIM2_CNTRL=0;
TIM2_CR1 = TIM2_CR1 | 0x01;            // 启动计数



中断函数:
@far @interrupt void TIM2_CC_IRQHandler (void)
{

      i++;
}

在中断配置文件stm8_interrupt_vector.c中
               extern @far @interrupt void TIM2_CC_IRQHandler (void);
struct interrupt_vector const _vectab[]中为
               {0x82, TIM2_CC_IRQHandler}, /* irq14 */

dsjsjf 发表于 2015-6-12 23:36:42

帮顶一下

ts2000 发表于 2015-6-13 08:39:12

还是用库函数简单。。。。。。。

liuzhu 发表于 2015-6-13 09:04:12

嗯。。。那我还是去尝试用库函数吧:)

liuzhu 发表于 2015-6-13 09:51:24

ts2000 发表于 2015-6-13 08:39
还是用库函数简单。。。。。。。

弱问一句,使用STVD能用库函数么

为什么是EEFOCUS小白 发表于 2015-6-13 15:14:40

cube才是王道

ts2000 发表于 2015-6-16 13:59:41

liuzhu 发表于 2015-6-13 09:51
弱问一句,使用STVD能用库函数么

能用的,
页: [1]
查看完整版本: TIM2通道1的比较输出无法进入中断