ARM7單片機(jī)(學(xué)習(xí)ing)—(四)、定時(shí)器—02
只要知道了Startup.s中對(duì)單片機(jī)時(shí)鐘的定義~~
也就是這句話:當(dāng)外部晶振頻率為12MHz時(shí),系統(tǒng)時(shí)鐘60MHz,外設(shè)時(shí)鐘15MHz~~
無(wú)敵了~~
感覺(jué)一下子好學(xué)了好多~~
不過(guò)我還是有點(diǎn)不太清楚就是外設(shè)時(shí)鐘?為什么是15MHz~~
現(xiàn)在可以先留著~~慢慢來(lái)吧~~
四、定時(shí)器
四—(02)、定時(shí)控制LED閃爍(應(yīng)用查詢(xún)法~~)
MDK4_1.c
//------------------------------------------------------------------------------
//使用定時(shí)器0實(shí)現(xiàn)1s定時(shí),控制LED閃爍
//今天使用的是查詢(xún)法~~
#include"lpc210x.h"
#include"macroandconst.h"
#include"bit.h"
//------------------------------------------------------------------------------
#define MR0 0//中斷寄存器中的位0。(如果有中斷產(chǎn)生,T0IR中對(duì)應(yīng)的位置位~~)這里用MR0中斷
#define LED 9//P0.9引腳控制LED,高電平點(diǎn)亮
//------------------------------------------------------------------------------
//port_init()
//端口初始化函數(shù)
void port_init()
{
PINSEL0=0X00000000;//設(shè)置所有引腳連接GPIO
PINSEL1=0X00000000;
SET_BIT(IODIR,LED);//設(shè)置LED引腳為輸出,其它引腳為輸入
}
//------------------------------------------------------------------------------
//timer0_init()
//定時(shí)器0初始化函數(shù)
//初始化定時(shí)器0,實(shí)現(xiàn)0.5s定時(shí)
void timer0_init()
{
T0PR=99;//設(shè)置定時(shí)器分頻為100分頻
T0MCR=0X03;//匹配通道0匹配中斷并復(fù)位T0TC
T0MR0=150000/2;//比較值
T0TCR=0X03;//啟動(dòng)并復(fù)位T0TC。T0TCR[1]為1時(shí)復(fù)位~~
T0TCR=0X01;
}
//------------------------------------------------------------------------------
//mian
int main()
{
port_init();
timer0_init();
SET_BIT(IOSET,LED);
while(1)
{
while(GET_BIT(T0IR,MR0)==0);//等待定時(shí)時(shí)間到
SET_BIT(T0IR,MR0);//向?qū)?yīng)的T0IR位寫(xiě)入1會(huì)復(fù)位中斷,寫(xiě)入0無(wú)效
if(GET_BIT(IOSET,LED)==0)//讀取IOSET中LED位的值,如果為0,則對(duì)IOSET寄存器寫(xiě)入1;如果不為0,則對(duì)IOCLR寄存器的LED位寫(xiě)入1,送低電平~~
SET_BIT(IOSET,LED);
else
SET_BIT(IOCLR,LED);
}
}