定时器中断实验
Timer.h 代码如下:
#ifndef _TIMER0_H_ #define _TIMER0_H_ void Timer0_Init(void);#endif Timer.c 代码如下:
#include "timer.h" #include "config.h" void Timer0_Init(void){ rTCFG0 &= ~(0xff);rTCFG0 |= 99;rTCFG1 &= ~(0xf);rTCFG1 |= 0X02;rTCNTB0 = 62500;rTCON |=(1 << 1);rTCON = 0x09;} Interrupt.h 代码如下:
#ifndef __INTERRUPT_H__ #define __INTERRUPT_H__ void Timer0_Interrupt_Init(void);#endif Interrupt.c 代码如下:
#include "2440addr.h" void Timer0_Interrupt_Init(void){ rINTMSK &= ~(1 << 10);} Isrservice.h 代码如下:
#ifndef __ISRSERVICE_h__ #define __ISRSERVICE_h__ void Isr_Init(void);void __irq Timer0_Isr(void);#endif Isrservice.c 代码如下:
#include"config.h" #include"isrservice.h" extern unsigned int flag;void Isr_Init(void)
{ pISR_TIMER0 =(U32)Timer0_Isr;} void __irq Timer0_Isr(void){ flag =!flag;rSRCPND |= 1 << 10;rINTPND |= 1 << 10;} Main.c 代码如下:
#include "ledflow.h" #include "isrservice.h" #include "interrupt.h" #include "timer.h" void IO_Init();unsigned int flag = 0;int Main(){ IO_Init();while(1){ if(flag){ Led2_On();} else { Led2_Off();} } return 0;} void IO_Init(){ Led_Init();Timer0_Init();Timer0_Interrupt_Init();Isr_Init();} Ledflow.c 代码如下:
#include "ledflow.h" #include "2440addr.h" void Led_Init(void)
{ rGPBCON &= ~((3 << 10)|(3 << 12)|(3 << 14)|(3 << 16));rGPBCON |=((1<<10)|(1<<12)|(1<<14)|(1<<16));rGPBUP &= ~((1 << 5)|(1 << 6)|(1 << 7)||(1 << 8));rGPBDAT |=(1 << 5)|(1 << 6)|(1 << 7)|(1 << 8);} Ledflow.h 代码如下:
#ifndef __LEDFLOW_H__ #define __LEDFLOW_H__ #include "2440addr.h" #define Led1_On(){rGPBDAT &=(~(1 << 5));} #define Led1_Off(){rGPBDAT |=(1 << 5);} #define Led2_On(){rGPBDAT &=(~(1 << 6));} #define Led2_Off(){rGPBDAT |=(1 << 6);} #define Led3_On(){rGPBDAT &=(~(1 << 7));} #define Led3_Off(){rGPBDAT |=(1 << 7);} #define Led4_On(){rGPBDAT &=(~(1 << 8));} #define Led4_Off(){rGPBDAT |=(1 << 8);} extern void Led_Init(void);#endif 实验结果如下:
