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

📄 clock.c

📁 lpc2138读写SD卡的fat文件系统
💻 C
字号:
/******************************************************************************/
/*  This file is part of the kp development                                   */
/*  Copyright kp                                                              */
/******************************************************************************/
/*                                                                            */
/*  Clock.C:  Low Level clock Routines                                        */
/*                                                                            */
/******************************************************************************/

#include <LPC213x.H>                     // LPC21xx definitions
#include <bsp.h>                         // include board support package

extern void set_LED (unsigned char led_no, unsigned char led_cmd);

// Real-time clock interrupt routine
void rtc (void) __irq {
  if ((SEC % 2)==0) set_LED(2,1);
  else set_LED(2,0);
  ILR = 1;                               // Clear RTC interrupt flag
  VICVectAddr = 0;                       // Acknowledge Interrupt
}

void init_clock (void)  {                // Initialize clock Interface
  CCR = 0x02;                            // reset CTC 
  CCR = 0x00;                            // bring CTC out of reset
  CCR = 0x01;                            // enable CTR counter
  CIIR = AMR = 0x00;					 // don't select counter or alarm interrupts
  SEC = 13; 							 // init clock value registers
  MIN = 58;
  HOUR = 12;  
//  DOM =  
//  DOW =  
//  DOY =  
  MONTH = 8;
  YEAR = 2005; 
  
// setup interrupt for every second
  CIIR = 0x01;							// gererate and interrupt each second
  						 
  // The 15 Mhz come from a cclk=60 Mhz, w/ VPBDIV=0 (or div 4) (see startup.s)
  PREINT = 456;	                         // int(15mhz/32768)-1 = 456	   
  PREFRAC = 25024;	                     // 15Mhz - ((PREINT+1)*32678) = 25,024
  VICVectAddr3 = (unsigned long)rtc;     // set interrupt vector in 0
  VICVectCntl3 = 0x20 | 13;              // use it for real-time clock
//  VICIntEnable = 0x00002030;             // Enable Timer0, 1, and RTC Interrupt
}

/*
#define ILR            (*((volatile unsigned char *) 0xE0024000))
#define CTC            (*((volatile unsigned short*) 0xE0024004))
#define CCR            (*((volatile unsigned char *) 0xE0024008))
#define CIIR           (*((volatile unsigned char *) 0xE002400C))
#define AMR            (*((volatile unsigned char *) 0xE0024010))
#define CTIME0         (*((volatile unsigned long *) 0xE0024014))
#define CTIME1         (*((volatile unsigned long *) 0xE0024018))
#define CTIME2         (*((volatile unsigned long *) 0xE002401C))

#define SEC            (*((volatile unsigned char *) 0xE0024020))
#define MIN            (*((volatile unsigned char *) 0xE0024024))
#define HOUR           (*((volatile unsigned char *) 0xE0024028))
#define DOM            (*((volatile unsigned char *) 0xE002402C))
#define DOW            (*((volatile unsigned char *) 0xE0024030))
#define DOY            (*((volatile unsigned short*) 0xE0024034))
#define MONTH          (*((volatile unsigned char *) 0xE0024038))
#define YEAR           (*((volatile unsigned short*) 0xE002403C))

#define ALSEC          (*((volatile unsigned char *) 0xE0024060))
#define ALMIN          (*((volatile unsigned char *) 0xE0024064))
#define ALHOUR         (*((volatile unsigned char *) 0xE0024068))
#define ALDOM          (*((volatile unsigned char *) 0xE002406C))
#define ALDOW          (*((volatile unsigned char *) 0xE0024070))
#define ALDOY          (*((volatile unsigned short*) 0xE0024074))
#define ALMON          (*((volatile unsigned char *) 0xE0024078))
#define ALYEAR         (*((volatile unsigned short*) 0xE002407C))

#define PREINT         (*((volatile unsigned short*) 0xE0024080))
#define PREFRAC        (*((volatile unsigned short*) 0xE0024084))
*/

⌨️ 快捷键说明

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