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