配置简单RTC(库函数版)(注意修改头文件)
- #include "all.h"
- void delay(uint32_t num)
- {
- uint32_t i;
- for(i=0;i<num;i++);
- }
- void rtc_work_cfg()
- {
- uint32_t scaler;
- uint32_t cnt;
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP,ENABLE);
- PWR_BackupAccessCmd(ENABLE); // Enable or disables access to the RTC and backup registers.
- RCC_BackupResetCmd(ENABLE);
- RCC_BackupResetCmd(DISABLE);
- RCC_RTCCLKCmd(ENABLE); //Enable or disables the RTC clock.
- RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); //Configure the RTC clock (RTCCLK).
- RCC_LSEConfig(RCC_LSE_ON); //Configure the External Low Speed oscillator (LSE).
- while(!(RCC->BDCR & 0x1<<1)); // //External low-speed clock ready flag.
-
- RTC_WaitForLastTask(); //Wait until last write operation on RTC registers has finished.
- RTC_EnterConfigMode(); //Enter the RTC configuration mode.
- RTC_SetPrescaler(0x80); //Set the RTC prescaler value.
- RTC_SetCounter(0x50); //Set the RTC counter value.
- RTC_SetAlarm(0x150); //Set the RTC alarm value.
-
- RTC_ExitConfigMode(); //Exit from the RTC configuration mode.
- RTC_WaitForLastTask(); //Wait until last write operation on RTC registers has finished.
- RTC_WaitForSynchro(); //wait until the RTC registers (RTC_CNT, RTC_ALR and RTC_PRL) are synchronized with RTC APB clock.
- delay(8000);
- //***************************************************
- RTC_WaitForLastTask(); //Wait until last write operation on RTC registers has finished.
- RTC_EnterConfigMode(); //Enter the RTC configuration mode.
- RTC_SetCounter(0x500); //Set the RTC counter value.
- RTC_ExitConfigMode(); //Exit from the RTC configuration mode.
- RTC_WaitForLastTask(); //Wait until last write operation on RTC registers has finished.
- RTC_WaitForSynchro(); //wait until the RTC registers (RTC_CNT, RTC_ALR and RTC_PRL) are synchronized with RTC APB clock.
- //***************************************************
- delay(8000);
- cnt = RTC_GetCounter();
- scaler = RTC_GetDivider();
- delay(100);
- printf_info("Prescaler = %x,cnt = %x\n",scaler,cnt);
- }
- void main()
- {
- rtc_work_cfg();
- }
|