请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:EVM430-FR6047 主题中讨论的其他器件: MSP430FR6047
您好!
我´m 使用具有 MSP430FR6047控制器的 EVM430-FR6047、并希望配置一个计时器来生成周期性中断。 我的n´t 是、控制器不会进入中断服务例程。 我已经按照以下方式配置了计时器,在 while (1)循环之前,在主函数中调用 Timer_A0_Init()函数:
void Timer_A0_Init (void){ Timer_A_initUpModeParam timerAParam; timerAparam.clockSource = TIMER_A_CLOCKSOURCE_SMCLK; timerAParam.clockSourceDivider = TIMER_A_CLOCKSOURCE_divider; timerAparam.timerPeriod = 10000; timerAparam.timerInterruptEnable_TAIE = TIMER_A_TAIE_INTERRUPT_ENABLE; timerAParam.captureCompareInterruptEnable_CCR0_CCIE = TIMER_A_CCIE_CCR0_INTERRUPT_DISABLE; timerAParam.timerClear = timer_a_skip_clear; timerAParam.startTimer = true; Timer_A_initUpMode (TA0_BASE、&timerAParam); Timer_A_enableInterrupt (TA0_BASE); Timer_A_startCounter (TA0_BASE、TIMER_A_UP_MODE); }
中断服务例程当前仅尝试切换 LED 和端口引脚、如下所示:
#pragma vector=TIMER0_A0_VECTOR __INTERRUPT void Timer_A0_ISR (void){ if (LEDisOn = 1){ LEDisOn = 0; HAL_SYSTEM_LEDOff (HAL_SYS_LED_1); GPIO_setOutputLowOnPin (GPIO_PORT_P7、GPIO_PIN5); } 否则{ LEDisOn = 1; HAL_SYSTEM_LEDOn (HAL_SYS_LED_1); GPIO_setOutputHighOnPin (GPIO_PORT_P7、GPIO_PIN5); } Timer_A_clearTimerInterrupt (TA0_BASE); }
n´t 调试程序、我发现程序确实会进入服务例程、但会从主函数的开头重复启动。
我猜是我没有合适的中断矢量。 我´ve 了在相应的头文件中定义的许多其他定时器中断矢量、但没有任何效果。
为了实现完整性、我的主函数:
int main (void) { WDTCTL = WDTPW + WDTHOLD; HAL_SYSTEM_Init(); HAL_UART_Init(); Timer_A0_Init(); GPIO_setAsOutputPin (GPIO_PORT_P7、GPIO_PIN5); while (1) { 。} }
提前感谢、致以诚挚的问候