ARM7單片機(jī)(學(xué)習(xí)ing)—(五)、實時時鐘(RTC)—02
五、實時時鐘(RTC)
五—(02)、1s定時控制(通過查詢法實現(xiàn)~~)
注意:后面的程序有操作步驟~~
~~
然后就是程序了:
MDK5_1.c
//------------------------------------------------------------------------------
//1s定時控制(查詢方式~~)
//RTC我也不想有太多的介紹~~不管是查詢方式,還是中斷方式~~其實都是一樣的~~
//現(xiàn)在我也是只想結(jié)束ARM7的學(xué)習(xí)~~
//注意:
//預(yù)分頻寄存器的計數(shù)如下:
//PREINT=int(Fpclk/32768)-1;預(yù)分頻整書寄存器
//PREFPAC=Fpclk-((PREINT+1)*32768);預(yù)分頻小數(shù)寄存器
//RTC的基本操作方式:
//1)設(shè)置RTC預(yù)分頻器(PREINT、PREFRAC);
//2)初始化RTC時鐘源,如:YEAR、MONTH、DOM等~~
//3)報警終端設(shè)置,如CIIR、AMR等~~
//4)啟動RTC,既CCR等的CLKEN位置位
//5)讀取完整時間寄存器值或者等待中斷
//------------------------------------------------------------------------------
//利用RTC的增量功能進(jìn)行1s的定時,當(dāng)定時時間到,取反LED控制~~
//------------------------------------------------------------------------------
#include"lpc210x.h"
#include"bit.h"
#include"macroandconst.h"
//------------------------------------------------------------------------------
#define RTCCIF0//中斷位置寄存器ILR[0];為1時計數(shù)器增量中斷模塊產(chǎn)生中斷。向該位寫入1來清除計數(shù)器增量中斷
#define LED 10//P0.10口為LED控制口,高電平點亮
#define Fpclk 15000000L//定義Fpclk的值,用于設(shè)置串口波特率
//------------------------------------------------------------------------------
//rtc_init()
//RTC初始化函數(shù)
void rtc_init()
{
PREINT=Fpclk/32768-1;//設(shè)置預(yù)分頻器
PREFRAC=Fpclk-(PREINT+1)*32768;
YEAR=2012;//初始化年
MONTH=2;//初始化月
DOM=3;//初始化日
CIIR=0x01;//設(shè)置秒針的增量產(chǎn)生一次中斷
CCR=0x01;//啟動RTC
}
//------------------------------------------------------------------------------
//main
int main()
{
PINSEL0=0x00000000;//引腳連接設(shè)置
PINSEL1=0x00000000;
SET_BIT(IODIR,LED);//設(shè)置LED口為輸出
rtc_init();
while(1)
{
SET_BIT(IOSET,LED);//點亮LED
while(GET_BIT(ILR,RTCCIF)==0);//等待RTC增量中斷標(biāo)志
SET_BIT(ILR,RTCCIF);//清除中斷標(biāo)志
SET_BIT(IOCLR,LED);//熄滅LED
while(GET_BIT(ILR,RTCCIF)==0);//等待RTC增量中斷標(biāo)志
SET_BIT(ILR,RTCCIF);//清除中斷標(biāo)志
}
}