TIM2进入不了中断

2019-07-19 21:50发布

最近在学习STM8L152C6 遇到问题
void TIME2_Init(U8 psc,U16 arr)
{
CLK_PCKENR1 = 1<<1;//使能TIM2时钟
TIM2_PSCR = psc;
TIM2_ARRH = (arr&0XFF00)>>8;
TIM2_ARRL = arr&0XFF;;

TIM2_CR1 = 1<<7;//开启预装载
TIM2_IER = 1<<0;//开启更新中断
TIM2_SR1 &= 0<<0;//清除中断标志位
TIM2_CR1 = 1<<0;//开启TIM2
}

@far @interrupt void TIM2_IRQHandler(void)
{
FLAG=1;
TIM2_SR1 &= 0<<0;//清除中断标志位
return;
}

在stm8_interrupt_vector.c里面定义
extern void _stext();     /* startup routine */
extern @far @interrupt void TIM2_IRQHandler(void);

struct interrupt_vector const _vectab[] = {
{0x82, (interrupt_handler_t)_stext}, /* reset */
{0x82, NonHandledInterrupt}, /* trap  */
{0x82, NonHandledInterrupt}, /* irq0  */
{0x82, NonHandledInterrupt}, /* irq1  */
{0x82, NonHandledInterrupt}, /* irq2  */
{0x82, NonHandledInterrupt}, /* irq3  */
{0x82, NonHandledInterrupt}, /* irq4  */
{0x82, NonHandledInterrupt}, /* irq5  */
{0x82, NonHandledInterrupt}, /* irq6  */
{0x82, NonHandledInterrupt}, /* irq7  */
{0x82, NonHandledInterrupt}, /* irq8  */
{0x82, NonHandledInterrupt}, /* irq9  */
{0x82, NonHandledInterrupt}, /* irq10 */
{0x82, NonHandledInterrupt}, /* irq11 */
{0x82, NonHandledInterrupt}, /* irq12 */
{0x82, NonHandledInterrupt}, /* irq13 */
{0x82, NonHandledInterrupt}, /* irq14 */
{0x82, NonHandledInterrupt}, /* irq15 */
{0x82, NonHandledInterrupt}, /* irq16 */
{0x82, NonHandledInterrupt}, /* irq17 */
{0x82, NonHandledInterrupt}, /* irq18 */
{0x82, NonHandledInterrupt}, /* irq19 */
{0x82, TIM2_IRQHandler}, /* irq20 */
{0x82, NonHandledInterrupt}, /* irq21 */
{0x82, NonHandledInterrupt}, /* irq22 */
{0x82, NonHandledInterrupt}, /* irq23 */
{0x82, NonHandledInterrupt}, /* irq24 */
{0x82, NonHandledInterrupt}, /* irq25 */
{0x82, NonHandledInterrupt}, /* irq26 */
{0x82, NonHandledInterrupt}, /* irq27 */
{0x82, NonHandledInterrupt}, /* irq28 */
{0x82, NonHandledInterrupt}, /* irq29 */
};

main()
{
TIME2_Init(7,1999);
_asm("rim"); //开启全局中断
while (1)
{}
}

为什么中断老进不去呀?


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。