|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
LPC213X四路單邊PWM模塊應(yīng)用源碼 |
| 作者:hotpower 欄目:ARM技術(shù) |
/*---------------------------------------------------------------- ARM水鳥 HotPower@126.com 2006.06.26 23:55 于西安大雁塔村隊部 -----------------------------------------------------------------*/ void PwmObj::OpenPwm(unsigned int worknum) { worknum &= 3; PWM->PWM_PR = 0x00; PWM->PWM_MCR = (1 << PWMMCRR0); SWITCH (worknum) { case 0://CD1 PINSEL->PIN_SEL0 |= (P0_7_PWM2 << P0_7_PINSEL);// P0.7連接到PWM2 PWM->PWM_PCR |= (1 << PWMENA2); PWM->PWM_MR0 = PwmSize;//16KHz (周期數(shù)=864) PWM->PWM_MR2 = PwmStartSize; PWM->PWM_LER = (1 << PWMLER2) | (1 << PWMLER0); break; case 1://CD2 PINSEL->PIN_SEL0 |= (P0_8_PWM4 << P0_8_PINSEL);// P0.8連接到PWM4 PWM->PWM_PCR |= (1 << PWMENA4); PWM->PWM_MR0 = PwmSize;//16KHz (周期數(shù)=864) PWM->PWM_MR4 = PwmStartSize; PWM->PWM_LER = (1 << PWMLER4) | (1 << PWMLER0); break; case 2://CD3 PINSEL->PIN_SEL0 |= (P0_9_PWM6 << P0_9_PINSEL);// P0.9連接到PWM6 PWM->PWM_PCR |= (1 << PWMENA6); PWM->PWM_MR0 = PwmSize;//16KHz (周期數(shù)=864) PWM->PWM_MR6 = PwmStartSize; PWM->PWM_LER = (1 << PWMLER6) | (1 << PWMLER0); break; case 3://CD4 PINSEL->PIN_SEL1 |= (P0_21_PWM5 << P0_21_PINSEL);// P0.21連接到PWM5 PWM->PWM_PCR |= (1 << PWMENA5); PWM->PWM_MR0 = PwmSize;//16KHz (周期數(shù)=864) PWM->PWM_MR5 = PwmStartSize; PWM->PWM_LER = (1 << PWMLER5) | (1 << PWMLER0); break; } PWM->PWM_TCR = 0x02; PWM->PWM_TCR = 0x09; } void PwmObj::ClosePwm(unsigned int worknum) { worknum &= 3; SWITCH (worknum) { case 0: PWM->PWM_MR2 = 0;//PWM2 CDPORT->IOCLR = (1 << P0_7); CDPORT->IODIR |= (1 << P0_7); PINSEL->PIN_SEL0 &= ~(3 << P0_7_PINSEL);// P0.7連接到GPIO break; case 1: PWM->PWM_MR4 = 0;//PWM4 CDPORT->IOCLR = (1 << P0_8); CDPORT->IODIR |= (1 << P0_8); PINSEL->PIN_SEL0 &= ~(3 << P0_8_PINSEL);// P0.8連接到GPIO break; case 2: PWM->PWM_MR6 = 0;//PWM6 CDPORT->IOCLR = (1 << P0_9); CDPORT->IODIR |= (1 << P0_9); PINSEL->PIN_SEL0 &= ~(3 << P0_9_PINSEL);// P0.9連接到GPIO break; case 3: PWM->PWM_MR5 = 0;//PWM5 CDPORT->IOCLR = (1 << P0_21); CDPORT->IODIR |= (1 << P0_21); PINSEL->PIN_SEL1 &= ~(3 << P0_21_PINSEL);// P0.21連接到GPIO break; } } void PwmObj::IncPwm(unsigned int worknum) { worknum &= 3; SWITCH(worknum) { case 0: if ((PWM->PWM_MR2 + 1) < (PWM->PWM_MR0 * 70 / 100)) { PWM->PWM_MR2 += 1; PWM->PWM_LER = (1 << PWMLER2) | (1 << PWMLER0); } break; case 1: if ((PWM->PWM_MR4 + 1) < (PWM->PWM_MR0 * 70 / 100)) { PWM->PWM_MR4 += 1; PWM->PWM_LER = (1 << PWMLER4) | (1 << PWMLER0); } break; case 2: if ((PWM->PWM_MR6 + 1) < (PWM->PWM_MR0 * 70 / 100)) { PWM->PWM_MR6 += 1; PWM->PWM_LER = (1 << PWMLER6) | (1 << PWMLER0); } break; case 3: if ((PWM->PWM_MR5 + 1) < (PWM->PWM_MR0 * 70 / 100)) { PWM->PWM_MR5 += 1; PWM->PWM_LER = (1 << PWMLER5) | (1 << PWMLER0); } break; } } void PwmObj::DecPwm(unsigned int worknum) { worknum &= 3; SWITCH(worknum) { case 0: if (PWM->PWM_MR2 >= 1) { PWM->PWM_MR2 -= 1; PWM->PWM_LER = (1 << PWMLER2) | (1 << PWMLER0); } break; case 1: if (PWM->PWM_MR4 >= 1) { PWM->PWM_MR4 -= 1; & |
| 2樓: | >>參與討論 |
| 作者: win2000_li 于 2006/6/27 8:34:00 發(fā)布:
好大哥,讓弟弟見識了。支持 |
|
| 3樓: | >>參與討論 |
| 作者: win2000_li 于 2006/6/27 8:37:00 發(fā)布:
有沒有C的代碼。??? |
|
| 4樓: | >>參與討論 |
| 作者: win2000_li 于 2006/6/27 12:38:00 發(fā)布:
能說一說其實現(xiàn)什么功能嗎???? 它的方波頻率是多少? 它的四路輸出的頻率是一樣的嗎??? 你是怎么實現(xiàn)脈沖輸出個數(shù)的計數(shù)的?? |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |