性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

  • 回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖

stm8s 單片機(jī)調(diào)制SPWM

今天用STM8s試了下調(diào)制SPWM,查表法做的,定時(shí)器1通道2引腳輸出SPWM,又通過(guò)一個(gè)LC濾波,就看到了下面的正弦波

 

IMG_20150120_170940

#include "IOSTM8S103K3.h"
#include "math.h"
#include 
#define LED PC_ODR_ODR2

unsigned int pwm_duty[100];



unsigned char j=0; /* Phase difference */

unsigned char cnt_pwm=0;

void math(void)
{  
   unsigned char i;
   for(i=0; i<100; i++)
    {

       pwm_duty[i]=(unsigned int)(127+(float)127*sin(2*3.1415926*(float)i*0.2/(float)20));
   
    } 
}
void delay_us(unsigned int us)
{
       unsigned char j;
       while(us!=0)
       {
              for(j=0;j<250;j++)
              {}
              us--;
       }
} 

void Init_Timer4(void)
{  
    asm("sim"); 
    TIM4_CR1=0x01;//使能計(jì)數(shù)器
    TIM4_IER=0x01;//更新中斷使能
    TIM4_EGR=0x01;
    TIM4_CNTR=199;//計(jì)數(shù)器值
    TIM4_ARR=199;//自動(dòng)重裝的值
    TIM4_PSCR=0x02;//分頻值128
    asm("rim");//開全局中斷,延時(shí)16.32ms
}
#pragma vector=TIM4_OVR_UIF_vector//0x19
__interrupt void TIM4_OVR_UIF_IRQHandler(void)//對(duì)應(yīng)IAP的中斷地址:0x8060
{
   TIM4_SR=0x00;
   cnt_pwm++;


   
  
    if (cnt_pwm>3)
    {
      cnt_pwm=0;  
      /* Sin wave CC1 PB0*/
   

      if(j>= 100) j=0;
      TIM1_CCR2H = (unsigned char)(pwm_duty[j]>>8);
      TIM1_CCR2L = (unsigned char)(pwm_duty[j]&0x00ff);
      j++;


    }


}
void TIM1_CH2_PWM_INIT(void)
 {
  CLK_PCKENR1|=0x80;//開啟定時(shí)器1外設(shè)時(shí)鐘 
  TIM1_EGR=0x01;//重新初始化TIM1
  TIM1_EGR|=0x60;//重新初始化TIM1
  TIM1_ARRH=0x00;//設(shè)定重裝載值
  TIM1_ARRL=255;
  TIM1_PSCRH=0;//預(yù)分頻
  TIM1_PSCRL=1;
  TIM1_CR1=0;//邊沿對(duì)齊,向上計(jì)數(shù)
  
  TIM1_CCER1=0x11;//高電平有效
  
  TIM1_CCMR1=0x60;//PWM模式1
   TIM1_CCMR2=0x60;//PWM模式1
  
  TIM1_CCR2H=0;//占空比
  
  TIM1_CCR2L=254;
    
  TIM1_CCR1H=0;//占空比
  
  TIM1_CCR1L=254;
  
  TIM1_CR1|=0x01;//向上計(jì)數(shù),無(wú)緩存,使能
  TIM1_BKR=0x80;//開啟剎車
 }
void main( void )
{


    /*High speed internal clock prescaler: 1*/
          CLK_CKDIVR = 0x00;
          math();
          PC_DDR|=0x04;
	  PC_CR1|=0x04;
	  PC_CR2|=0x00;
          Init_Timer4();
          TIM1_CH2_PWM_INIT();





 


    while(1)
  {   
}


}
全部回復(fù)(17)
正序查看
倒序查看
net20
LV.4
2
2015-01-22 10:30
這是《例說(shuō)STM8S單片機(jī)》里的樣例程序吧
0
回復(fù)
2015-01-22 13:27
@net20
這是《例說(shuō)STM8S單片機(jī)》里的樣例程序吧

一個(gè)一個(gè)敲出來(lái)的啊

RC濾波后引腳波形

 

 

0
回復(fù)
net20
LV.4
4
2015-01-24 10:30
@想飛的狼
一個(gè)一個(gè)敲出來(lái)的啊RC濾波后引腳波形 [圖片] 
不錯(cuò)啊,參考一下
0
回復(fù)
2015-02-09 21:56
@想飛的狼
一個(gè)一個(gè)敲出來(lái)的啊RC濾波后引腳波形 [圖片] 
照這個(gè)公式STM32都算不過(guò)來(lái),STM8算出來(lái)得有多慢。
0
回復(fù)
2015-02-10 09:28
@westkinger
照這個(gè)公式STM32都算不過(guò)來(lái),STM8算出來(lái)得有多慢。
系統(tǒng)初始化的時(shí)候算一次,以后不算
0
回復(fù)
2015-02-13 19:10
@想飛的狼
系統(tǒng)初始化的時(shí)候算一次,以后不算
好想法,不錯(cuò)。
0
回復(fù)
小螃蟹
LV.1
8
2015-02-15 09:54
你這個(gè)不用換向嗎,你的電路原理圖是怎么樣的,正弦波不是有上下兩部分
0
回復(fù)
2015-02-23 12:24
在程序里面調(diào)用sin函數(shù)不是太好,這樣比較耗資源,一般都采用查表來(lái)實(shí)現(xiàn)的吧
0
回復(fù)
2015-03-03 13:48
@皇甫仁和
在程序里面調(diào)用sin函數(shù)不是太好,這樣比較耗資源,一般都采用查表來(lái)實(shí)現(xiàn)的吧
系統(tǒng)初始化的時(shí)候算一次,以后不算,也可以查表,一樣的
0
回復(fù)
2015-03-27 19:24
@想飛的狼
系統(tǒng)初始化的時(shí)候算一次,以后不算,也可以查表,一樣的
穩(wěn)壓,軟啟和保護(hù)做的怎么樣
0
回復(fù)
2016-03-06 20:42
@想飛的狼
一個(gè)一個(gè)敲出來(lái)的啊RC濾波后引腳波形 [圖片] 

單片機(jī)出來(lái)后經(jīng)過(guò)RC和LC的波形不一樣。

LC才行?

0
回復(fù)
2016-05-08 22:11
@錦瑟年華0
穩(wěn)壓,軟啟和保護(hù)做的怎么樣
好貼
0
回復(fù)
zhouboak
LV.8
14
2016-05-16 21:07
@空軍通信兵
好貼

0
回復(fù)
ruohan
LV.9
15
2016-05-19 17:24
@zhouboak
zhe chne
0
回復(fù)
dapeng
LV.5
16
2016-11-15 21:41

不錯(cuò)!不知能否把原理圖奉獻(xiàn)出來(lái)讓大家學(xué)習(xí)下

0
回復(fù)
ruohan
LV.9
17
2016-11-16 09:31
@dapeng
不錯(cuò)!不知能否把原理圖奉獻(xiàn)出來(lái)讓大家學(xué)習(xí)下
共享一下原理圖,看看,怎么接的
0
回復(fù)
ruohan
LV.9
18
2016-12-08 16:42
@想飛的狼
系統(tǒng)初始化的時(shí)候算一次,以后不算

pwm_duty[i]=(unsigned int)(127+(float)127*sin(2*3.1415926*(float)i*0.2/(float)20));

講解一下這個(gè)語(yǔ)句的意思

0
回復(fù)
發(fā)