CRG.h 4.81 KB
/******************************************************************************
文 件 名:CLOCK.h
功能描述:时钟系统设置及初始化头文件
作    者:张暄
版    本:V1.0
日    期:2016.11.2
******************************************************************************/

#ifndef _CRG_H_
#define _CRG_H_

#include "stdint.h"
#include "mc9s12xhy256.h"
extern uint8_t Motortime;
extern uint8_t FuelTimeFlag;
/******************************************************************************
时钟频率
******************************************************************************/
#define    OSCCLK                        8000000             /* 晶振频率 */
#define    BUSCLK                       32000000             /* 总线频率 */
#define    PLLCLK                     BUSCLK * 2             /* PLL 频率 */

/******************************************************************************
伪停机(Pseudo Stop)模式使能
******************************************************************************/
#define    CRG_USE_PSEUDO_STOP_MODE            1

/******************************************************************************
停机状态标志
******************************************************************************/
extern volatile uint8_t CRGStopMode;
#define    CRG_STOP_MODE                       CRGStopMode

/******************************************************************************
看门狗定时周期选择
******************************************************************************/
#define   WDT_PERIOD     WDT_PERIOD_4194304xTosc


/******************************************************************************
看门狗定时周期
******************************************************************************/
#define    WDT_PERIOD_INVALID               0x00     /* 无效周期,关闭 WDT */
#define    WDT_PERIOD_16384xTosc            0x01     /* 2^14 个OSCCLK周期 */
#define    WDT_PERIOD_65536xTosc            0x02     /* 2^16 个OSCCLK周期 */
#define    WDT_PERIOD_262144xTosc           0x03     /* 2^18 个OSCCLK周期 */
#define    WDT_PERIOD_1048576xTosc          0x04     /* 2^20 个OSCCLK周期 */
#define    WDT_PERIOD_4194304xTosc          0x05     /* 2^22 个OSCCLK周期 */
#define    WDT_PERIOD_8388608xTosc          0x06     /* 2^23 个OSCCLK周期 */
#define    WDT_PERIOD_16777216xTosc         0x07     /* 2^24 个OSCCLK周期 */

/******************************************************************************
时钟频率上下限,依芯片型号而定
******************************************************************************/
//晶振频率上下限
#define    OSCCLK_MIN                    4000000
#define    OSCCLK_MAX                   16000000

//PLL参考频率上下限
#define    REFCLK_MIN                    1000000
#define    REFCLK_MAX                   40000000

//PLL压控振荡器频率上下限
#define    VCOCLK_MIN                   32000000
#define    VCOCLK_MAX                  120000000

/******************************************************************************
看门狗复位宏定义
******************************************************************************/
#define    wdt_reset()       __RESET_WATCHDOG()

/******************************************************************************
RTI计时结构
******************************************************************************/
typedef struct
{
  uint16_t  RollingCounter;
  uint16_t  BackupCounter;
  uint16_t  Year;
  uint16_t  BackupYear;
  uint8_t   Month;
  uint8_t   Date;
  uint8_t   Hour;
  uint8_t   Minute;
  uint8_t   Second;
  uint8_t   LeapYear;
} RTITimingStruct;

extern volatile RTITimingStruct RealTimeClock;

#define   RTC_ROLLING_COUNTER               RealTimeClock.RollingCounter
#define   RTC_YEAR                          RealTimeClock.Year
#define   RTC_MONTH                         RealTimeClock.Month
#define   RTC_DATE                          RealTimeClock.Date
#define   RTC_HOUR                          RealTimeClock.Hour
#define   RTC_MINUTE                        RealTimeClock.Minute
#define   RTC_SECOND                        RealTimeClock.Second
#define   RTC_LEAP_YEAR                     RealTimeClock.LeapYear

/******************************************************************************
时钟默认时间
******************************************************************************/
#define   RTC_DEFAULT_YEAR                  2020
#define   RTC_DEFAULT_MONTH                 4
#define   RTC_DEFAULT_DATE                  7
#define   RTC_DEFAULT_HOUR                  0
#define   RTC_DEFAULT_MINUTE                0
#define   RTC_DEFAULT_SECOND                0

/******************************************************************************
函数声明
******************************************************************************/
void WDT_Init(void);
void Clock_Init(void);
//void CRG_Enter_Stop_Mode(void);
void RTI_Init(void);
void RTI_Timing_Service(void);
uint8_t Determine_Leap_Year(uint16_t Year);
void Enter_Stop_Mode(void);
#endif