/******************************************* * 文件名称:PWM.c * 功能:测试s3c2440的PWM功能 * 作者:jianqi * 版本:1.0 **********************************************/ #include"2440addr.h" //包含2440相关寄存器的设置 #include "def.h" #define U32 unsigned int //四个LED对应GPB5.6.7.8。 #define LED1 5 #define LED2 6 #define LED3 7 #define LED4 8 #define Bit(x) (1<<x) //将某位置位 #define Output(x) (1<<2*x) //将对应IO置为输出 /******************************************* * 名称:Timer0_ISR * 功能:Timer0中断服务程序 * 入口参数:无 * 出口参数:无 **********************************************/ void __irq Timer0_ISR(void) { static int count=0; count ++; rSRCPND=rSRCPND|(0x1<<10); rINTPND=rINTPND|(0x1<<10); //每隔2秒LED亮 if(count%4==0) { rGPBDAT=~0x1e0; //LED全亮 } else if(count%4==1) { rGPBDAT=0x1e0; //LED全灭 } } /******************************************* * 名称:Time0_init * 功能:Timer0初始化 * 入口参数:无 * 出口参数:无 **********************************************/ void Time0_init(void) { rTCFG0=249; // 250分频 rTCFG1=0x02; //1/8分频,25Khz rTCNTB0=12500; //定时0.5秒 rTCON=(1<<1)|(1<<3); //更新TCNTB0,自动重载 rTCON&=~(1<<1); //清除手动更新位 } /******************************************* * 名称:IO_init * 功能:B口初始化 * 入口参数:无 * 出口参数:无 **********************************************/ void IO_init(void) { rGPBCON=Output(LED1)|Output(LED2)|Output(LED3)|Output(LED4); //LED的IO口置为输出 rGPBDAT=0xffff; //LED全部熄灭 } /******************************************* * 名称:INT_init * 功能:中断初始化 * 入口参数:无 * 出口参数:无 **********************************************/ void INT_init(void) { rSRCPND=rSRCPND|(0x1<<10); rINTPND=rINTPND|(0x1<<10); rINTMSK=~(0x1<<10); //打开Timer0中断 } /******************************************* * 名称:Main * 功能:测试PWM功能 * 入口参数:无 * 出口参数:无 **********************************************/ void Main(void) { IO_init(); //初始化IO口 Time0_init(); //初始化Timer0 INT_init(); //初始化Timer0的中断 pISR_TIMER0=(U32)Timer0_ISR; //注册Timer0中断函数 rTCON|=(1<<0); //开始TImer0 while(1); { ; } }