我的KL25Z怎么进不了中断啊,中断也开了,中断函数也写了,就是进不去啊
- void Pit_init(void)
- {
- SIM_SCGC6 |= SIM_SCGC6_PIT_MASK; /*PIT定时器系统时钟使能*/
- enable_irq(INT_PIT-16); /*定时器中断向量使能*/
- PIT_MCR=0X00; /*标准定时器时钟使能*/
- PIT_TCTRL1=0X00; /*定时器的级联位,使能位,中断位全部清除*/
- PIT_LDVAL1=48000; //定时器初始值,定时器采用倒计时方式,记到0是产生中断,这里计时PIT_LDVAL1/SYSCLOCK,这里相当于1ms
- PIT_TCTRL1=PIT_TCTRL_tiE_MASK; //定时器中断使能位使能
- PIT_TFLG1=0X01; //中断标志位,标志超时并发送中断请求,向该位写1,即为清除该标志
- PIT_TCTRL1=PIT_TCTRL_TEN_MASK; //定时器使能位使能
- }
-
- void Pit1_isr(void)
- {
-
- //PIT_TCTRL1=PIT_TCTRL_TEN_SHIFT; // 关闭定时器
- PIT_TFLG1=0X01; //清除标志位
-
- RED_ON; //红灯亮
- BLUE_ON; //蓝灯亮
- // PIT_TCTRL1=PIT_TCTRL_TEN_MASK;
-
- }
复制代码在isr.h里也定义了
- #ifndef __ISR_H
- #define __ISR_H 1
-
- extern void tpm0_isr(void);
- extern void tpm1_isr(void);
- extern void Pit1_isr(void);
-
-
- #undef VECTOR_033
- #define VECTOR_033 tpm0_isr
-
- #undef VECTOR_034
- #define VECTOR_034 tpm1_isr
-
- #undef VECTOR_038
- #define VECTOR_038 Pit1_isr
-
-
- #endif //__ISR_H
复制代码不知道为什么就是不执行中断,求帮助
- void Pit1_init(void)
- {
- SIM_SCGC6 |= SIM_SCGC6_PIT_MASK; // enable PIT module
-
- /* Enable PIT Interrupt in NVIC*/
- enable_irq(INT_PIT - 16);
-
- PIT_MCR = 0x00; // MDIS = 0 enables timer
- PIT_TCTRL1 = 0x00; // disable PIT1
- PIT_LDVAL1 = 48000; //
- PIT_TCTRL1 = PIT_TCTRL_TIE_MASK; // enable PIT1 and interrupt
- PIT_TFLG1 = 0x01; // clear flag
- PIT_TCTRL1 |= PIT_TCTRL_TEN_MASK;
-
- }
- CUInt16 ti_accel_sampling;
- CUInt16 base_time125m;
- CUInt16 ti_delay;
- CUInt16 ti_print;
- CUInt16 ti_task;
- void PIT_IRQHandler(void)
- //void Pit1_isrv(void)
- {
- static char count_mseg=125;
- PIT_TFLG1 = 0x01; // clear flag
- if (count_mseg)count_mseg--;
- if (ti_accel_sampling) ti_accel_sampling--;
- else
- {
- count_mseg=125;
- base_time125m++;
- }
- if (ti_task) ti_task--;
- if (ti_delay) ti_delay--;
- if (ti_print) ti_print--;
- }
复制代码我在mkl05中测试,通过,能进中断定时器诸如:PIT、LPTMR、TPM之类的模块都有设置调试状态时他们的counter是如何运行的。
如果设置的不好,他们的counter在调试时是不会增长的,自然就会导致无法进入中断。
多谢啊
一周热门 更多>