⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rtc.c

📁 hreadx实时嵌入式操作系统源代码,ARM移植. threadx是一个很好的多任务实时嵌入式操作系统
💻 C
📖 第 1 页 / 共 2 页
字号:
/****************************************Copyright (c)****************************************************
**                            Guangzhou ZHIYUAN electronics Co.,LTD.
**                                      
**                                 http://www.embedtools.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name:               rtc.c
** Last modified Date:      2007-12-20
** Last Version:            1.0.0
** Descriptions:            2440 RTC 管理库
**
**--------------------------------------------------------------------------------------------------------
** Created by:              Hanhui
** Created date:            2007-12-20
** Version:                 1.0.0
** Descriptions:            2440 RTC 管理库
**
**--------------------------------------------------------------------------------------------------------
** Modified by:             
** Modified date:           
** Version:                 
** Descriptions:            
**
*********************************************************************************************************/
#include "config.h"
#include "rtc.h"
/*********************************************************************************************************
  定时时间到时触发的函数
*********************************************************************************************************/
static void     (*__GpfuncRtcAlarmFunc)(void);
/*********************************************************************************************************
** Function name:           __rtcTimeCheck
** Descriptions:            检查一个时间是否有效
** input parameters:        prtctimeCheck       需要检查的时间
** output parameters:       NONE
** Returned value:          -1 表示错误  0 表示正确
** Created by:              Hanhui
** Created Date:            2007/12/20
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
static int  __rtcTimeCheck (RTC_TIME  *prtctimeCheck)
{
    if (prtctimeCheck->usYear < 2000) {
        return  (-1);
    }
    if (prtctimeCheck->ucMonth < 1 ||
        prtctimeCheck->ucMonth > 12) {
        return  (-1);
    }
    if (prtctimeCheck->ucDate < 1 ||
        prtctimeCheck->ucDate > 31) {
        return  (-1);
    }
    if (prtctimeCheck->ucDay < 1 ||
        prtctimeCheck->ucDay > 7) {
        return  (-1);
    }
    if (prtctimeCheck->ucHour > 23) {
        return  (-1);
    }
    if (prtctimeCheck->ucMinute > 59) {
        return  (-1);
    }
    if (prtctimeCheck->ucSecond > 59) {
        return  (-1);
    }
    
    return  (0);
}
/*********************************************************************************************************
** Function name:           __rtcIsr
** Descriptions:            RTC 中断服务程序
** input parameters:        NONE
** output parameters:       NONE
** Returned value:          NONE
** Created by:              Hanhui
** Created Date:            2007/12/20
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void  __rtcIsr (void)
{
    INTER_CLR_PNDING(BIT_RTC);
    
    if (__GpfuncRtcAlarmFunc) {
        __GpfuncRtcAlarmFunc();
    }
}
/*********************************************************************************************************
** Function name:           rtcInit
** Descriptions:            初始化 RTC 模块
** input parameters:        NONE
** output parameters:       NONE
** Returned value:          NONE
** Created by:              Hanhui
** Created Date:            2007/12/20
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void  rtcInit (void)
{
    rRTCCON |= 0x01;                                                    /*  允许对 RTC 的操作           */
}
/*********************************************************************************************************
** Function name:           rtcEnableAlarm
** Descriptions:            允许 RTC 模块闹钟唤醒功能
** input parameters:        NONE
** output parameters:       NONE
** Returned value:          NONE
** Created by:              Hanhui
** Created Date:            2007/12/20
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void  rtcEnableAlarm (void)
{
    INTER_CLR_PNDING(BIT_RTC);                                          /*  清除中断                    */
    
   HandleRTC = (int)__rtcIsr;
   /*  changed by lixintian 2008.4.2
    vicIrqSet(VIC_CHANNEL_RTC, VIC_CHANNEL_RTC, 
              (unsigned long)__rtcIsr);                                 /*  允许闹钟中断                */
    
    rRTCALM |= (1 << 6);                                                /*  允许 RTC ALARM              */
}
/*********************************************************************************************************
** Function name:           rtcDisableAlarm
** Descriptions:            不允许 RTC 模块闹钟唤醒功能
** input parameters:        NONE
** output parameters:       NONE
** Returned value:          NONE
** Created by:              Hanhui
** Created Date:            2007/12/20
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void  rtcDisableAlarm (void)
{
    //vicIrqFree(VIC_CHANNEL_RTC);                                        /*  不允许中断                  */

    rRTCALM &= ~(1 << 6);                                               /*  不允许 RTC ALARM            */
}
/*********************************************************************************************************
** Function name:           rtcSetAlarmEnBit
** Descriptions:            设置 RTC 模块闹钟唤醒有效位
** input parameters:        ucBits          有效位掩码
** output parameters:       NONE
** Returned value:          NONE
** Created by:              Hanhui
** Created Date:            2007/12/20
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void  rtcSetAlarmEnBit (unsigned char  ucBits)
{
    if (rRTCALM & (1 << 6)) {
        rRTCALM = (unsigned char)((1 << 6)  | ucBits);
    } else {
        rRTCALM = (unsigned char)(~(1 << 6) & ucBits);
    }
}
/*********************************************************************************************************
** Function name:           rtcSetAlarmFunc
** Descriptions:            设置闹铃时间到时, 执行的函数(在中断中执行)
** input parameters:        pfuncRtcAlarmFunc   闹铃到时执行的函数
** output parameters:       NONE
** Returned value:          NONE
** Created by:              Hanhui
** Created Date:            2007/12/20
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void  rtcSetAlarmFunc (void  (*pfuncRtcAlarmFunc)(void))
{
    __GpfuncRtcAlarmFunc = pfuncRtcAlarmFunc;
}
/*********************************************************************************************************
** Function name:           rtcSetAlarmTime
** Descriptions:            设置闹钟唤醒时间
** input parameters:        prtctimeAlarm       闹铃时间
** output parameters:       NONE
** Returned value:          NONE
** Created by:              Hanhui
** Created Date:            2007/12/20
**--------------------------------------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -