資源描述:
《s3c2410pwm定時(shí)器中斷實(shí)驗(yàn)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、實(shí)驗(yàn)6S3C2410PWM定時(shí)器中斷實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康恼莆誗3C2410PWM定時(shí)器的工作原理和定時(shí)時(shí)間的計(jì)算方法,掌握和PWM定時(shí)器有關(guān)寄存器的使用方法,會(huì)用C語言對PWM定時(shí)器進(jìn)行初始化編程,理解PWM定時(shí)器中斷的觸發(fā)過程,熟練掌握和中斷相關(guān)寄存器的使用以及中斷服務(wù)函數(shù)的編程方法。二、實(shí)驗(yàn)內(nèi)容UP-NETARM2410實(shí)驗(yàn)箱上兩個(gè)LED數(shù)碼管的控制地址為0x08000110和0x08000112。借助于PWM定時(shí)計(jì)數(shù)器可實(shí)現(xiàn)簡單的計(jì)數(shù)秒表。由于只有兩位數(shù)碼管,秒表計(jì)到99秒后,從0開始重新計(jì)數(shù)。同時(shí)三個(gè)發(fā)光二極管每隔一秒閃爍點(diǎn)亮。三、PWM定時(shí)器相
2、關(guān)知識S3C2410A具有5個(gè)16位的定時(shí)器,其中定時(shí)器0~3具有PWM波發(fā)生功能,即可以輸出PWM波,定時(shí)器4沒有外部輸出。定時(shí)器工作頻率為PCLK/(預(yù)分頻值+1)/分頻值,在下面的工程中,將使用定時(shí)器1,并設(shè)置其工作頻率為20?kHz,即為:48MHz/(149+1)/16=20?kHz所以定時(shí)時(shí)間為:0x4E20*20?kHz=1S定時(shí)器1的初始化方法如下: 首先,設(shè)置TCFG0(定時(shí)器配置寄存器0,地址為0x51000000)的值為0x95,即定時(shí)器1的預(yù)分頻值為0x95,十進(jìn)制數(shù)為149。注意:定時(shí)器0和1共用同一個(gè)預(yù)分頻值?! ∪缓?,
3、設(shè)置TCFG1(定時(shí)器配置寄存器1,地址為0x51000004)的值為0x30,即定時(shí)器1的分頻值為16。 其次,設(shè)置TCNTB1(定時(shí)器1計(jì)數(shù)寄存器,地址為0x51000018)和TCMPB1(定時(shí)器1比較寄存器,地址為0x5100001C)的值為0x4E20和0x4000。這里沒有用到TCMPB1,當(dāng)TCNTB1減計(jì)數(shù)到0后,將觸發(fā)定時(shí)器1中斷再次,設(shè)置TCON(定時(shí)器控制寄存器,地址為0x51000008)的值為0xA00,即刷新TCNB1和TCMPB1的值。最后,設(shè)置TCON的值為0x900,啟動(dòng)定時(shí)器1。四、參考程序(1)PWM定時(shí)初始化
4、程序段34voidinitTimer1(void) 35{36TCFG0=0x95; //prescale=119 37TCFG1=0x30; //divider=1/16 38TCNTB1=0x4E20-1;//counternumber=0x4E1F 39TCMPB1=0x4000; 40TCON=0xA00;//updateTCNTB1andTCMPB1 41TCON=0x900;//StartTimer1 42}(2)開PWM定時(shí)中斷程序段voidopenTimer1(void)46{ 47INTMOD=0x0; /
5、/setasIRQ 48INTMSK&=~(0x800);//openTimer1 49 PRIORITY=0x7F; 50}(3)PWM定時(shí)器中斷服務(wù)程序段54__irqvoidc_Timer1_ISR() 55{ 5657intiReg=0; 58if(SRCPND
6、0x800)//mustchangefrom0x200to0x800 59SRCPND=0x800; 60if(INTPND
7、0x800)//mustchangefrom0x200to0x800 61INTPND=0x800; 62//INTMSK
8、=0xFFFF
9、FFFF;//closeall,includeTimer1 63nLED=0; 64switch(number) 65{ 66case0:67nLED^=(LED2_MASK
10、LED3_MASK);//LED1light 68break; 69case1: 70nLED^=(LED1_MASK
11、LED3_MASK); //LED2light 71break; 72case2: 73nLED^=(LED1_MASK
12、LED2_MASK); //LED3light 74break; 75} 76numbe
13、r++;77if(number>2) 78number=0; 79GPCDAT_ADDR=nLED;//Ledshineinturn 80 81//Seg7LEDcountseachsecond 82if(nCnt>=100) 83nCnt=0; 84Seg7A=seg7val[nCnt/10]; 85Seg7B=seg7val[nCnt%10]; 86nCnt++;五、實(shí)驗(yàn)結(jié)果和思考題請自己作答。怎么樣改變定時(shí)時(shí)間??六、實(shí)驗(yàn)心得體會(huì)