微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM32F4DiscoveryRTC

STM32F4DiscoveryRTC

时间:11-26 来源:互联网 点击:

(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)

{}

RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);

RCC_RTCCLKCmd(ENABLE);

RTC_WaitForSynchro();

RTC_InitStructure.RTC_HourFormat= RTC_HourFormat_24; //24 hour format

//32768/ (1 + 0x7F) = 32768 /128 = 256Hz,

//256/ (1 + 0xFF) = 1Hz, This is the calender frequecy~

RTC_InitStructure.RTC_SynchPrediv= 0xFF;

RTC_InitStructure.RTC_AsynchPrediv= 0x7F;

if(RTC_Init(&RTC_InitStructure) == ERROR)

printf("RTCinit failed");

else

printf("RTCinit success");

NVIC_Configuration();

RTC_WakeUpCmd(DISABLE); //important

//Configure the RTC WakeUp Clock source: CK_SPRE (1Hz)

RTC_WakeUpClockConfig(RTC_WakeUpClock_CK_SPRE_16bits);

RTC_SetWakeUpCounter(0x0);

RTC_WakeUpCmd(ENABLE);

RTC_ClearITPendingBit(RTC_IT_WUT);

RTC_ITConfig(RTC_IT_WUT,ENABLE);

}

中断配置流程见RM009023.5节RTC interrupt

使能唤醒中断初始化序列:

1) 配置并使能EXTI Line22进入中断模式并选择上升沿触发。

2) 在NVIC中配置RTC_WKUP_IRQ

3) 配置RTC来产生RTC唤醒时钟事件

static void NVIC_Configuration(void)

{

NVIC_InitTypeDef NVIC_InitStructure;

EXTI_InitTypeDefEXTI_InitStructure;

EXTI_ClearITPendingBit(EXTI_Line22);

EXTI_InitStructure.EXTI_Line= EXTI_Line22;

EXTI_InitStructure.EXTI_Mode= EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger= EXTI_Trigger_Rising;

EXTI_InitStructure.EXTI_LineCmd= ENABLE;

EXTI_Init(&EXTI_InitStructure);

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

NVIC_InitStructure.NVIC_IRQChannel = RTC_WKUP_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top