×
单片机 > 单片机程序设计 > 详情

ARM7单片机(学习ing)—(四)、定时器—02

发布时间:2020-05-28 发布时间:
|

只要知道了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);
 } 
}


关键字:ARM7  单片机  定时器 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM中断源之定时器中断