大家好、
这个问题需要我很长时间才能解决、这必须有一个解决方案。
在一个 RTC 中断之后、每秒将获取9次读数。 尽管《用户手册》中已经说明过、RTC 中断仍必须在 ISR 例程中清除。 这只是一个测试例程。 volatile unsigned long 整数递增1。 一个很短的 LED 指示灯闪烁、并显示 LCD 上的更新编号。 然后调用 LPM0以等待下一个 RTC 中断。
问题是、当 P1.2或 P2.6在 IO 初始化中设置了它们的中断时、此代码块将完全失败。 最终、在最终项目中、还有其他类似的中断必须与 RTC 同时运行。 这需要一个解决方案。
//配置按钮 S1 (P1.2)中断
GPIO_selectInterruptEdge (GPIO_PORT_P1、GPIO_PIN2、GPIO_HIGH_TO_LOW_TRANSITION);
GPIO_setAsInputPinWithPullUpResistor (GPIO_PORT_P1、GPIO_PIN2);
GPIO_clearInterrupt (GPIO_PORT_P1、GPIO_PIN2);
// GPIO_enableInterrupt (GPIO_PORT_P1、GPIO_PIN2);
//配置按钮 S2 (P2.6)中断
GPIO_selectInterruptEdge (GPIO_PORT_P2、GPIO_PIN6、GPIO_HIGH_TO_LOW_TRANSITION);
GPIO_setAsInputPinWithPullUpResistor (GPIO_PORT_P2、GPIO_PIN6);
GPIO_clearInterrupt (GPIO_PORT_P2、GPIO_PIN6);
// GPIO_enableInterrupt (GPIO_PORT_P2、GPIO_PIN6);
三
_bis_SR_register (LPM0_bits | GIE); //进入睡眠模式
__no_operation(); //主循环结束
}
#pragma vector = RTC_vector
_interrupt void RTC_ISR (void)
{
RTC_clearInterrupt (RTC_BASE、RTC_overflow_interrupt_FLAG);
_BIC_SR_REGISTER_ON_EXIT (LPM0_BITS); //编辑、这现在出现在 ISR 例程的顶部
P1OUT |= BIT0; //打开 LED1
_DELAY_CYCLES (100000);
IReturn=IReturn+10;
P1OUT &=~BIT0; //关闭 LED1
_DELAY_CYCLES (100000);
}