timer0.c

来自「LPC2129实现从SPI通讯和两个串口定时器中断」· C语言 代码 · 共 48 行

C
48
字号
 #include "timer0.h"
 //#include "LPC2294.h"
 #include "uart0.h"
 #include "uart1.h"
 

 /************************************************/
 /* function: void initial_timer0()				 */
 /*  功能:实现定时中断的中断时间和中断向量的设置*/
 /*  创建人:张继生 2009-12-12                   */
 /*************************************************/
void initial_timer0()
{
  T0TC=0;  //计数器初始值为0;
  T0PR=0; //时钟不分频,时钟为Fpclk
  T0MCR=0x03; //设置T0MR0匹配后复位T0TC,并产生中断
  T0MR0=Fpclk;//1s中断一次
  T0TCR=0x01;//启动定时器0

  irq_timer0_set();
}
 /************************************************/
 /* function: void __irq irq_timer0()			 */
 /*  功能:中断函数                              */
 /*  创建人:张继生 2009-12-12                   */
 /*************************************************/
void __irq irq_timer0()
{
  UART0_SendByte(0x21);
 // UART1_SendByte(0x22);
 // SSendData(0x40);
  //以下必须的加,不然只能中断一次
  T0IR=0x01;		   //清除中断标志
  VICVectAddr=0x00; //通知VIC中断处理结束
}
 /************************************************/
 /* function: void irq_timer0_set()				 */
 /*  功能:实现定时中断的中断向量的设置          */
 /*  创建人:张继生 2009-12-12                   */
 /*************************************************/
void irq_timer0_set()
{
 VICIntSelect=VICIntSelect & ( ~(1 << 4)); //定时器0分配为IRQ中断
 VICVectCntl1=0x20 | 4;		//定时器0中断分配为向量IRQ通道0;
 VICVectAddr1=(uint32)irq_timer0; //向量IRQ通道0的中断服务程序地址为 timer0_isr
 VICIntEnable=VICIntEnable | (1 << 4);   //使能定时器0中断
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?