📄 clock.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 + -