ARM7单片机(学习ing)—(四)、定时器—02
扫描二维码
随时随地手机看文章
只要知道了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);
}
}