找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2593|回復(fù): 0
收起左側(cè)

stm8s105k4單片機(jī)PWM波配置

[復(fù)制鏈接]
ID:914977 發(fā)表于 2021-5-2 15:31 | 顯示全部樓層 |閱讀模式
//ccr = 0~499
void setPWM1(unsigned short ccr){//PC1
  TIM1_CCR1H = (unsigned char)(ccr>>8);
  TIM1_CCR1L = (unsigned char)(ccr & 0xff);
}
void setPWM2(unsigned short ccr){//PC2
  TIM1_CCR2H = (unsigned char)(ccr>>8);
  TIM1_CCR2L = (unsigned char)(ccr & 0xff);
}
void setPWM3(unsigned short ccr){//PC3
  TIM1_CCR3H = (unsigned char)(ccr>>8);
  TIM1_CCR3L = (unsigned char)(ccr & 0xff);  
}
void setPWM4(unsigned short ccr){//PC4
  TIM1_CCR4H = (unsigned char)(ccr>>8);
  TIM1_CCR4L = (unsigned char)(ccr & 0xff);
}
void TIM1_init(void)
{
  TIM1_PSCRH = 0x01;    // 8M系統(tǒng)時(shí)鐘經(jīng)預(yù)分頻f=fck/(PSCR+1)
  TIM1_PSCRL = 0x3F;    // PSCR=0x13f,f=8M/(0x13F+1)=25 000Hz,每個(gè)計(jì)數(shù)周期40us
  TIM1_ARRH = 0x01;     // 自動(dòng)重載寄存器ARR=0x01F4=500
  TIM1_ARRL = 0xF4;     // 每記數(shù)500次產(chǎn)生一次中斷,即20ms
  /**
  * PWM 配置
  */
  PC_DDR |= 0x1E; PC_CR1 |= 0x1E; PC_ODR &= ~0x1E;

  TIM1_CCMR1 = 0x78;
  TIM1_CCMR2 = 0x78;
  TIM1_CCMR3 = 0x78;
  TIM1_CCMR4 = 0x78;// Output mode PWM2.
                    // 通道 2 被設(shè)置成比較輸出方式, OC2M = 111,為 PWM 模式 2, 向上計(jì)數(shù)時(shí),若計(jì)數(shù)器小于比較值,為無(wú)效電平
  TIM1_CCER1 = 0x33;
  TIM1_CCER2 = 0x33;// CC polarity low,enable PWM output */
                    // CC2P = 1,低電平為有效電平
                    // CC2E = 1,開啟輸出引腳
  //設(shè)置占空比
  setPWM1(0);  setPWM2(0);
  setPWM3(0);  setPWM4(0);

  TIM1_EGR=0X01; //重新初始化計(jì)數(shù)器,并產(chǎn)生一個(gè)更新事件,可以不要
  TIM1_BKR=0x80; //主輸出使能,必須要有

  TIM1_IER = 0x01;      // 允許更新中斷
  TIM1_CR1 = 0x01;      // 計(jì)數(shù)器使能,開始計(jì)數(shù)
}

//main()
    int i = 0;
    for(i=0;i<23;i++){ setPWM1(i*i);delay_ms(50); }
    for(i=22;i>0;i--){ setPWM1(i*i);delay_ms(50); }
    for(i=0;i<23;i++){ setPWM2(i*i);delay_ms(50); }
    for(i=22;i>0;i--){ setPWM2(i*i);delay_ms(50); }
    for(i=0;i<23;i++){ setPWM3(i*i);delay_ms(50); }
    for(i=22;i>0;i--){ setPWM3(i*i);delay_ms(50); }
    for(i=0;i<23;i++){ setPWM4(i*i);delay_ms(50); }
    for(i=22;i>0;i--){ setPWM4(i*i);delay_ms(50); }
    setPWM1(0);  setPWM2(0);
    setPWM3(0);  setPWM4(0);
    delay_ms(3000);*/

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表