|
STM32进入停止模式后,需要用RTC闹钟唤醒。但是一直没法进入RTC闹钟中断,是我哪里没设置好么?求指点!
EXTI_ClearITPendingBit(EXTI_Line17); //开启RTC中断
EXTI_InitStructure.EXTI_Line = EXTI_Line17;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn; //RTC全局中断
NVIC_InitStructure.NVIC_IRQChannelPriority = 0x01;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能该通道中断
NVIC_Init(&NVIC_InitStructure);
void RTC_IRQHandler(void) //RTC闹钟
{
if (RTC_GetITStatus(RTC_IT_ALRA) != RESET)
{
/* Clear the Alarm A Pending Bit */
RTC_ClearITPendingBit(RTC_IT_ALRA);
/* Clear EXTI line17 pending bit */
MACHINE_STAT1.field.mqtt_send_flag=1;
}
EXTI_ClearITPendingBit(EXTI_Line17);
}
void RTC_AlarmSet(void)
{
RTC_AlarmTypeDef RTC_AlarmStructure;
RTC_Read();
RTC_AlarmCmd(RTC_Alarm_A,DISABLE);//不开启闹钟A
RTC_AlarmStructure.RTC_AlarmTime.RTC_H12 = RTC_H12_AM;
RTC_AlarmStructure.RTC_AlarmTime.RTC_Hours = RTC_TimeStructure_Read.RTC_Hours;
RTC_AlarmStructure.RTC_AlarmTime.RTC_Minutes = RTC_TimeStructure_Read.RTC_Minutes+1;
RTC_AlarmStructure.RTC_AlarmTime.RTC_Seconds = RTC_TimeStructure_Read.RTC_Seconds;
RTC_AlarmStructure.RTC_AlarmMask=RTC_AlarmMask_DateWeekDay; //屏蔽日期和时间
RTC_SetAlarm(RTC_Format_BIN, RTC_Alarm_A, &RTC_AlarmStructure);
RTC_ClearITPendingBit(RTC_IT_ALRA);
RTC_WaitForSynchro();
RTC_ITConfig(RTC_IT_ALRA,ENABLE);//开启闹钟A中断
RTC_AlarmCmd(RTC_Alarm_A,ENABLE);//开启闹钟A
}
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
阿莫论坛才是最爱国的,关心国家的经济、社会的发展、担心国家被别国牵连卷入战争、知道珍惜来之不易的和平发展,知道师夷之长,关注世界的先进文化与技术,也探讨中国文化的博大精深,也懂得警惕民粹主义的祸国殃民等等等等,无不是爱国忧民的表现。(坛友:tianxian)
|