音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(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ù)
LPC213X四路單邊PWM模塊應(yīng)用源碼
/*----------------------------------------------------------------
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
好大哥,讓弟弟見識了。支持
 
3樓: >>參與討論
win2000_li
有沒有C的代碼。???
 
4樓: >>參與討論
win2000_li
能說一說其實現(xiàn)什么功能嗎????
它的方波頻率是多少?

它的四路輸出的頻率是一樣的嗎???

你是怎么實現(xiàn)脈沖輸出個數(shù)的計數(shù)的??



參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
cf卡在ture IDE模式讀寫時的問題,請指點!
全雙工串口通訊的中斷問題(請大蝦幫忙)
[開發(fā)工具]用UEstudio作為IDE進行ARM編程
keil的arm仿真器能用在ads環(huán)境下嗎?
請問可以減小VPB值來提高外設(shè)的速度嗎?
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號