这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » GD32 » GD32105R_START初体验之RTC秒中断

共1条 1/1 1 跳转至

GD32105R_START初体验之RTC秒中断

高工
2015-04-06 14:54:55     打赏

    在GD32105R_STAR的开发板中,也许是处于PCB板面积的考虑,RTC和后备寄存器由VDD进行同意供电,当然在以后的设计中也可以选用VBAT引脚进行供电。

    GD32 105R_STAR的RTC具有一个32位的可编程计数器,可以通过适当的软件提供日历时钟功能,还具有闹钟中断和阶段性中断功能。RTC的驱动时钟使用外部晶体的32.768kHz的振荡器,内部有一个20位的预分频器用于时基时钟,默认情况下时钟为32.768kHz时,它将产生一个1秒长的时间基准。

    在使用RTOS嵌入式操作系统时,为保证系统的有效运行,都需要有一个统一的系统时钟,此时RTC通常被选为系统的时基,本设计中通过对RTC的初始化设置,使其产生1秒的周期定时,RTC初始化代码如下:

/*

****************************************************************************

*函数名称:void RTC_Configuration(void)

*函数功能: RTC初始化配置函数

*入口参数:

*出口参数:

*日期:2015 4 6

*版本:V1.0

*作者:yrj

****************************************************************************

*/

void RTC_Configuration(void)

{

   /*初始化时间寄存器*/

   RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); /*给后备域提供时钟*/

   PWR_BackupAccessCmd(ENABLE);    /*使能写 Backup domain */

   BKP_DeInit();

   RCC_LSEConfig(RCC_LSE_ON);      /*打开外部低频晶振*/

   while(RCC_GetFlagStatus(RCC_FLAG_LSERDY)==RESET);/*等待外部低频晶振工作正常*/

   RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);     /*外部低频晶振作为RTC晶振源*/

   RCC_RTCCLKCmd(ENABLE); /*使能RTC*/

   RTC_WaitForSynchro();  /*等待RTC寄存器与RTC_APB时钟同步*/

   RTC_WaitForLastTask(); /*等待最近一次对RTC寄存器的写操作完成*/

   RTC_ITConfig(RTC_IT_SEC, ENABLE);/* 使能RTC秒中断*/

   RTC_WaitForLastTask();  /*等待最近一次对RTC寄存器的写操作完成*/

   RTC_SetPrescaler(32767);/*预分频(32.768 KHz)/(32767+1)*/

   RTC_WaitForLastTask();   /*等待最近一次对RTC寄存器的写操作完成*/

}

/*

****************************************************************************

*函数名称:u8 RTC_Set(uint32 seccount )

*函数功能: 设置时钟

*入口参数:RTC计时初始值

*出口参数:

*日期:2015 4 6

*版本:V1.0

*作者:yrj  

****************************************************************************

*/

u8 RTC_Set(uint32  seccount )

{  

    PWR_BackupAccessCmd(ENABLE); //使能后备寄存器

    RTC_WaitForLastTask();

    RTC_SetCounter(seccount); /*设置时钟*/

    RTC_WaitForLastTask();

    return 0;      

}

RTC中断服务函数,每秒钟进行一次中断,在中断函数中将LED的状态进行一次翻转。

/*

***************************************************************************

*函数名称:void RtcException(void)

*函数功能: RTC中断服务函数

*入口参数:无

*出口参数:无

*日期:2015 4 6

*版本:V1.0

*作者:yrj

***************************************************************************

*/

void RtcException(void)

{  

   if(RTC_GetITStatus(RTC_IT_SEC)==SET)

   {

     RTC_WaitForLastTask();

     RTC_ClearITPendingBit(RTC_IT_SEC);

     RTC_WaitForLastTask();


     LED_STAT=~LED_STATE;  /*LED状态每秒钟翻转一次*/

   }

}




关键词: GD32 105R_STAR     RTC    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]