只要知道了Startup.s中对单片机时钟的定义~~
也就是这句话:当外部晶振频率为12MHz时,系统时钟60MHz,外设时钟15MHz~~
无敌了~~
感觉一下子好学了好多~~
不过我还是有点不太清楚就是外设时钟?为什么是15MHz~~
现在可以先留着~~慢慢来吧~~
四、定时器
四—(02)、定时控制LED闪烁(应用查询法~~)
MDK4_1.c
//------------------------------------------------------------------------------
//使用定时器0实现1s定时,控制LED闪烁
//今天使用的是查询法~~
#include"lpc210x.h"
#include"macroandconst.h"
#include"bit.h"
//------------------------------------------------------------------------------
#define
MR0
0 //中断寄存器中的位0。(如果有中断产生,T0IR中对应的位置位~~)这里用MR0中断
#define
LED
9 //P0.9引脚控制LED,高电平点亮
//------------------------------------------------------------------------------
//port_init()
//端口初始化函数
void
port_init()
{
PINSEL0=0X00000000; //设置所有引脚连接GPIO
PINSEL1=0X00000000;
SET_BIT(IODIR,LED); //设置LED引脚为输出,其它引脚为输入
}
//------------------------------------------------------------------------------
//timer0_init()
//定时器0初始化函数
//初始化定时器0,实现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); //向对应的T0IR位写入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);
}
}
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』