|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
請(qǐng)教一個(gè)PWM中斷的問(wèn)題 |
| 作者:z6636 欄目:ARM技術(shù) |
我想試一下PWM中斷,我的程序如下,怎么不產(chǎn)生中斷? 請(qǐng)大哥指教,謝謝! /**************************************************************/ #include "config.h" #define CYCLE_DATA 2000 #define BEEPCON 0x00000080 /* P0.7引腳控制B1,低電平蜂鳴 */ /************************************************************/ void __irq IRQ_Pwm6(void) { uint32 DUTY_CYCLE_DATA =0,i; if(DUTY_CYCLE_DATA < 2000) { DUTY_CYCLE_DATA = DUTY_CYCLE_DATA +1; PWMMR0 = CYCLE_DATA; // 設(shè)置PWM周期 PWMMR6 = DUTY_CYCLE_DATA; // 設(shè)置PWM占空比 PWMLER = 0x41; // PWMMR0、PWMMR6鎖存 PWMTCR = 0x09; // 啟動(dòng)定時(shí)器,PWM使能 } else DUTY_CYCLE_DATA =0; { PWMMR0 = CYCLE_DATA; // 設(shè)置PWM周期 PWMMR6 = DUTY_CYCLE_DATA; // 設(shè)置PWM占空比 PWMLER = 0x41; // PWMMR0、PWMMR6鎖存 PWMTCR = 0x09; // 啟動(dòng)定時(shí)器,PWM使能 } i = IO0SET; // 讀取當(dāng)前B1控制值 if( (i&BEEPCON)==0 ) // 控制B1輸出取反 { IO0SET = BEEPCON; } else { IO0CLR = BEEPCON; } PWMIR = 0x01; // 清除PWM0中斷標(biāo)志 VICVectAddr = 0; // 向量中斷結(jié)束 } /**********************************************************/ int main(void) { PINSEL0 |= 0x00080000; // 設(shè)置PWM6連接到P0.9管腳 IO0DIR = BEEPCON; // 設(shè)置B1控制口為輸出 PWMPR = 0x00; // 不分頻,計(jì)數(shù)頻率為Fpclk PWMMCR = 0x01; // 設(shè)置PWMMR0匹配時(shí)中斷 PWMMR0 = CYCLE_DATA; // 設(shè)置PWM周期 PWMMR6 = 100; // 設(shè)置PWM占空比 PWMLER = 0x41; // PWMMR0、PWMMR6鎖存 PWMPCR = 0x4000; // 允許PWM6輸出,單邊PWM PWMIR = 0x01; // 清除PWM0中斷標(biāo)志 PWMTCR = 0x09; // 啟動(dòng)定時(shí)器,PWM使能 /* 打開(kāi)PWM0中斷(設(shè)置向量控制器,即使用向量IRQ) */ VICIntSelect = 0x00000000; // 設(shè)置所有中斷分配為IRQ中斷 VICVectCntl0 = 0x28; // 分配PWM0中斷到向量中斷0 VICVectAddr0 = (int)IRQ_Pwm6; // 設(shè)置中斷服務(wù)程序地址 VICIntEnable = 0x00000100; // 使能PWM0中斷 while(1); // 等待中斷 return(0); } |
| 2樓: | >>參與討論 |
| 作者: zlgarm 于 2006/1/10 12:59:00 發(fā)布:
re: PWMMCR 寄存器應(yīng)設(shè)置為0x03,PWMMR0匹配后產(chǎn)生中斷,還要復(fù)位PWMTC。 需要打開(kāi)IRQ中斷允許(即CPSR寄存器的I位,在StartUP.S文件中)。 |
|
| 3樓: | >>參與討論 |
| 作者: z6636 于 2006/1/10 15:53:00 發(fā)布:
xiexie |
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |