zoukankan      html  css  js  c++  java
  • TQ2440之定时器

    定时器实现流水灯:

    int main()
    {
     SystemClockInit();
     CLKCON |= (1<<8)|(1<<13);//使能PWMTIMER时钟,使能GPIO时钟
     GPBCON = 0x155555;//配置protB的所有引脚为输出
     Timer0_Config();
     while(1)
     {
      //点亮第一个小灯
      GPBDAT |= 0x1E0;
      GPBDAT &= 0x1C0;
      count=0;flag=0;
      while(flag!=1);flag=0;
    
      //点亮第二个小灯
      GPBDAT |= 0x1E0;
      GPBDAT &= 0x1A0;
      count=0;flag=0;
      while(flag!=1);flag=0;
    
      //点亮第三个小灯 
      GPBDAT |= 0x1E0;
      GPBDAT &= 0x160;
      count=0;flag=0;
      while(flag!=1);flag=0;
    
      //点亮第四个小灯 
      GPBDAT |= 0x1E0;
      GPBDAT &= 0x0E0;
      count=0;flag=0;
      while(flag!=1);flag=0;
     }
    }

    定时器配置:

    void Timer0_Config(void)
    {
     ClearPending(BIT_TIMER0);
     INTMSK &= ~(1<<10); //使能中断
     TCFG0 |= 0xF9;//预标定值=249   timer input clock frequency=PCLK/{prescaler value+1}/{divider value}
     TCFG1 |= 0x01;//定时器0进行4分频 
     TCNTB0 = 25000; //定时0.5秒
     TCON |= (1<<1);//手动更新
     TCON = 0x09;//自动加载,清"手动更新",启动定时器0
    }

    中断服务函数:

    void  IRQ_Handler(void) __irq //irq中断函数
    {
     int j=0;
     __asm{nop};
     __asm{nop};
     j= INTOFFSET;
     switch(j)
     {
      case 10:
      Timer0_Handler();//为中断0
      break;
     }
    }

    相应的中断处理函数:

    void Timer0_Handler(void)
    {
     ClearPending(BIT_TIMER0);
     count++;
     if(count == 2)
     {
      count = 0;
      flag = 1;
     }
    }
  • 相关阅读:
    Some ArcGIS Tools
    Optimization Algorithms
    BPTT
    Markdown 简明语法
    【转载】softmax的log似然代价函数(求导过程)
    DP tricks and experiences
    Google Chrome Keyboard Shortcuts
    【转载】如何掌握所有的程序语言
    转 C++ 面向对象程序设计的基本特点
    leetcode 18. 4Sum
  • 原文地址:https://www.cnblogs.com/zpehome/p/2846867.html
Copyright © 2011-2022 走看看