关于定时器我想使用DL_Timer_setCaptureCompareValue(TIMER_0_INST,400,DL_TIMER_CC_0_INDEX);来设置一个比较值。
然后后用DL_Timer_getRawInterruptStatus(TIMER_0_INST, DL_TIMERG_INTERRUPT_CC0_DN_EVENT)&DL_TIMERG_INTERRUPT_CC0_DN_EVENT来判断该中断是否生效。
现在的问题是DL_Timer_setCaptureCompareValue(TIMER_0_INST,400,DL_TIMER_CC_0_INDEX);
DL_TimerG_enableInterrupt(TIMER_0_INST , DL_TIMER_CC_0_INDEX);设置的中断未触发。
且DL_Timer_getRawInterruptStatus(TIMER_0_INST, DL_TIMERG_INTERRUPT_CC0_DN_EVENT)&DL_TIMERG_INTERRUPT_CC0_DN_EVENT一直为true
我使用的是timx_timer_mode_periodic_sleep_LP_MSPM0L1306_nortos_ticlang sdk项目进行测试,下面是我代码
#include "ti_msp_dl_config.h"
#include "uart.h"
int main(void)
{
SYSCFG_DL_init();
NVIC_EnableIRQ(TIMER_0_INST_INT_IRQN);
DL_SYSCTL_enableSleepOnExit();
DL_Timer_setCaptureCompareValue(TIMER_0_INST,400,DL_TIMER_CC_0_INDEX);
DL_TimerG_enableInterrupt(TIMER_0_INST , DL_TIMER_CC_0_INDEX);
DL_TimerG_startCounter(TIMER_0_INST);
while (1) {
__WFI();
}
}
void TIMER_0_INST_IRQHandler(void)
{
switch (DL_TimerG_getPendingInterrupt(TIMER_0_INST)) {
case DL_TIMER_IIDX_CC0_DN:
printk("cc0_dn\n");
break;
case DL_TIMER_IIDX_CC0_DN:
printk("cc0_up\n");
break;
case DL_TIMER_IIDX_LOAD:
if(DL_Timer_getRawInterruptStatus(TIMER_0_INST, DL_TIMERG_INTERRUPT_CC0_DN_EVENT)&DL_TIMERG_INTERRUPT_CC0_DN_EVENT)
{
printk("cc_trigger\n");
}
DL_GPIO_togglePins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);
break;
default:
break;
}
}