STM8S103定時器1,定時器2多路PWM波輸出

一、時鐘配置

1、STM8S的4種時鐘源可用做主時鐘:
● 1-24MHz高速外部晶體振盪器(HSE)
● 最大24MHz高速外部時鐘信號(HSE user-ext)
● 16MHz高速內部RC振盪器(HSI)
● 128KHz低速內部RC(LSI)

 STM8默認時鐘源爲16MHz高速內部RC振盪器(HSI)

對 CLK_CKDIVR設置可以設置時鐘爲HSI的分頻

如 CLK_CKDIVR|= (uint8_t)0x00;/*設置時鐘爲內部16M高速時鐘*/

2分頻爲 CLK_CKDIVR=0x08;4分頻爲 CLK_CKDIVR=0x10;8分頻爲 CLK_CKDIVR=0x18;

二、定時器1設置

1、定時器1CH3輸出PWM

代碼如:

     CLK_PCKENR1 |= 0x80;//開啓定時器1外設時鐘 
     TIM1_EGR = 0x01;   //重新初始化TIM1 
 
    TIM1_CR1 = 0x00;   //B7(0)可以直接寫入 B65(00)邊緣對齊模式B4(0)向上計數B3(0)計數器不停止發生更新事件
    TIM1_RCR = 0x00;  
    
      //設定預分頻爲,16分頻 16M
    TIM1_PSCRH =0x00;  //PWM的時鐘 影響週期
    TIM1_PSCRL =0x08;  //PWM的時鐘 影響週期
    
    TIM1_ARRH = 0x01;     //設定重裝載值
    TIM1_ARRL = 0x40;  //PWM的週期 
    
    TIM1_CCER2 = 0x03; //開啓CH3,高電平有效   
    TIM1_CCMR3 = 0x68; //PWM模式1,CC1配置入輸出
    TIM1_CCR3H = 0x00;
    TIM1_CCR3L = 0x40;  // 佔空比值
   // TIM1_DTR = 0x50;        // Deadtime generator
    TIM1_BKR |= 0x80;       //剎車
    TIM1_CR1 |= 0x01; //使能TIM1計數器

2、定時器1CH1輸出PWM

代碼如:

   TIM1_EGR = 0x01;   //重新初始化TIM1 
    //TIM1_CR1 = 0x00;   //B7(0)可以直接寫入 B65(00)邊緣對齊模式B4(0)向上計數B3(0)計數器不停止發生更新事件
   // TIM1_RCR = 0x00;  
      //設定預分頻爲,16分頻 16M
    TIM1_PSCRH =0x00;  //PWM的時鐘 影響週期
    TIM1_PSCRL =0x00;  //PWM的時鐘 影響週期
    
    TIM1_ARRH = 0x00;     //設定重裝載值
    TIM1_ARRL = 0x64;  //PWM的週期 100,f=20K,CLK=20*10=2M
 
    //CH1
    TIM1_CCER1 = 0x01; //CC2ER1開啓CH1  
    TIM1_CCMR1 = 0x68; //PWM模式1,CC1配置入輸出
    TIM1_CCR1H = 0x00;
    TIM1_CCR1L = 0x40;  // 佔空比值
    
     TIM1_OISR &= ~0x03;
   // TIM1_DTR = 0x50;        // Deadtime generator
    TIM1_BKR |= 0x80;       //剎車
    TIM1_CR1 |= 0x01; //使能TIM1計數器

CH1要產生PWM,GPIO要配爲推輓輸出模式

    PC_DDR|=0xff;//輸出
    PC_CR1|=0xff;//推輓
    PC_CR2|=0xf0;//速度

其次,C6引腳要複用爲定時器1的CH1通道

先DEBUG AND RUNINIG,之後會出現ST-LINK選項,點擊後配置option bytes,按圖配置,Alternate即爲1.

 

3、定時器1CH1與CH3輸出互補的PWM

代碼如:

  CLK_PCKENR1|= 0x80;//開啓定時器1外設時鐘
   TIM1_EGR = 0x01;   //重新初始化TIM1 
   TIM1_CR1 = 0x00;   //B7(0)可以直接寫入 B65(00)邊緣對齊模式B4(0)向上計數B3(0)計數器不停止發生更新事件
  TIM1_RCR = 0x00;  
  //PWM1,預裝載
  TIM1_CCMR1=0x68;
 //
  TIM1_PSCRH =0x00;  //PWM的時鐘 影響週期
  TIM1_PSCRL =0x00;  //PWM的時鐘 影響週期
  TIM1_ARRH = 0x07;     //設定重裝載值
  TIM1_ARRL = 0xD0;  //PWM的週期 07D0=2000,CLK=2M,f=1Kh

  TIM1_CCER1=0x05; //CH1互補輸出,高電平有效 
  TIM1_CCR1H = 0x03;
  TIM1_CCR1L = 0x00;  // 佔空比值

  TIM1_CR1 |= 0x01; //使能TIM1計數器
  TIM1_DTR = 0x50;        // Deadtime generator
  
  TIM1_BKR |= 0x80;       //剎車

注意CH3的C3引腳也要複用爲CH1的CH1N通道。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章