#include \#include \#include \#include \#include \
void Clk0_Enable(int clock_sel); void Clk1_Enable(int clock_sel); void Clk0_Disable(void); void Clk1_Disable(void); volatile U32 downloadAddress;
void (*restart)(void)=(void (*)(void))0x0; volatile unsigned char *downPt; volatile U32 downloadFileSize; volatile U16 checkSum; volatile unsigned int err=0; volatile U32 totalDmaCount;
volatile int isUsbdSetConfiguration; #define GPB5_out (1<<(5*2)) //led1 #define GPB6_out (1<<(6*2)) //led2 #define GPB7_out (1<<(7*2)) //led3 #define GPB8_out (1<<(8*2)) //led4 #define led1_on ~(1<<5) #define led2_on ~(1<<6) #define led3_on ~(1<<7) #define led4_on ~(1<<8) #define led1_off (1<<5) #define led2_off (1<<6) #define led3_off (1<<7) #define led4_off (1<<8) void __irq Timer0_handle();
extern void MMU_Init(); void Main(void) {
//U32 mpll_val=0; ChangeMPllValue(92,4,1); ChangeClockDivider(12,12); //rCLKDIVN&=~0x7; //rCLKDIVN|= 0x3;
MMU_Init();
rGPBCON=GPB5_out|GPB6_out|GPB7_out|GPB8_out; //设置GPB5-8为输出 rGPBDAT=led1_off|led2_off|led3_off|led4_off; //led灭 //配置中断寄存器
rSRCPND = rSRCPND | (0x1<<10); rINTPND = rINTPND | (0x1<<10); rINTMSK = ~(0x1<<10);
//打开定时器0中断
rTCFG0|=0xf9;//预定标值=249
rTCFG1|=0x01;//定时器0进行4分频,f=50M/(249+1)/4=50KHZ rTCNTB0=25000;//定时时间=25000*(1/f)=0.5s rTCON|=(1<<1); // 手动更新
rTCON=0x09; // 自动加载,清“手动更新”位,启动定时器0 pISR_TIMER0 =(U32)Timer0_handle;
//装入定时器0中断函数地址 pISR_TIMER0=(U32)Timer0_handle; while(1); }
void __irq Timer0_handle() //中断服务函数 {
static unsigned int count; count++;
ClearPending(BIT_TIMER0);//清SRCPND,INTPND的定时器0中断标志位 if(count%4==1) //第一次进入中断,led1亮,其他灭
}
{ }
if(count%4==2) //第二次进入中断,led2亮,其他灭 { }
if(count%4==3) //第三次进入中断,led3亮,其他灭 { }
if(count%4==0) //第四次进入中断,led4亮,其他灭 { }
rGPBDAT=led1_off|led2_off|led3_off; rGPBDAT=led1_off|led2_off|led4_off; rGPBDAT=led1_off|led3_off|led4_off; rGPBDAT=led2_off|led3_off|led4_off;
八.参考文献
[1]嵌入式系统设计与开发实例详解----------基于ARM的应用.北京航空航天大学出版社 [2]嵌入式系统原理及接口技术.清华大学出版社 [3]单片机原理与应用设计.电子工业出版社
相关推荐: