標(biāo)題: stm8單片機(jī)TIM1變頻程序 [打印本頁]

作者: ww990    時(shí)間: 2022-7-27 10:37
標(biāo)題: stm8單片機(jī)TIM1變頻程序
#include "IOSTM8S103F3.h"

unsigned int FRE=200;            //frequency  頻率 4M / 100 = 40K

void PWM_GPIO_Init( void )
{
    PC_DDR |= ( 1 << 7 );       //PC7 推挽輸出
    PC_CR1 |= ( 1 << 7 );
}

void TIM1_Init( void )
{
    PWM_GPIO_Init();
    TIM1_CR1 = ( 1 << 7 );                              //自動(dòng)預(yù)裝載允許
    TIM1_CCMR2 = ( 6 << 4 ) | ( 1 << 3 ) | ( 1 << 2 );  //TIM1 CH2 PWM1  輸出比較1預(yù)裝載使能  輸出比較1 快速使能
    TIM1_CCER1 |= 0x10;                                 //CC2為輸出 高電平有效
    TIM1_PSCRH = 0x00;                                  //預(yù)分頻 0
    TIM1_PSCRL = 0x03;                                  //16M/(1+3)=4 M
    TIM1_ARRH = FRE >> 8;                               //設(shè)定自動(dòng)重裝載值高8位
    TIM1_ARRL = FRE;                                    //設(shè)置自動(dòng)重裝載值低8位
    TIM1_BKR = 0x80;                                    //剎車寄存器 使能OC1輸出 定時(shí)器不工作時(shí)輸出無效電平
    TIM1_EGR = ( 1 << 0 );                              //產(chǎn)生更新事件
    TIM1_CR1 |= 0x01;                                   //使能計(jì)數(shù)器
}

//TIM1 CH2  PC7

void TIM1_CH2_FRE_DC_Change( unsigned int freq, unsigned int dc )
{
    TIM1_ARRH = freq >> 8;                     //設(shè)置頻率
    TIM1_ARRL = freq;
    TIM1_CCR2H = dc >> 8;
    TIM1_CCR2L = dc;
}

void SysClkInit( void )
{
    CLK_SWR = 0xe1;       //HSI為主時(shí)鐘源  16MHz CPU時(shí)鐘頻率
    CLK_CKDIVR = 0x00;    //CPU時(shí)鐘0分頻,系統(tǒng)時(shí)鐘0分頻
}

void main( void )
{
    unsigned int i = 100;
    SysClkInit();
    __asm( "sim" );
    TIM1_Init();
    __asm( "rim" );
    while( 1 )
    {
        for( i = 100; i < 2000; i++ )
        {
            TIM1_CH2_FRE_DC_Change( i, i / 2 );
        }
    }
}

PWM變頻輸出(寄存器).rar

162.39 KB, 下載次數(shù): 16, 下載積分: 黑幣 -5

TIM1_PWM輸出(庫函數(shù)).rar

643.47 KB, 下載次數(shù): 18, 下載積分: 黑幣 -5






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1