找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1103|回复: 0
收起左侧

stm8单片机TIM1变频程序

[复制链接]
ID:162811 发表于 2022-7-27 10:37 | 显示全部楼层 |阅读模式
#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 );                              //自动预装载允许
    TIM1_CCMR2 = ( 6 << 4 ) | ( 1 << 3 ) | ( 1 << 2 );  //TIM1 CH2 PWM1  输出比较1预装载使能  输出比较1 快速使能
    TIM1_CCER1 |= 0x10;                                 //CC2为输出 高电平有效
    TIM1_PSCRH = 0x00;                                  //预分频 0
    TIM1_PSCRL = 0x03;                                  //16M/(1+3)=4 M
    TIM1_ARRH = FRE >> 8;                               //设定自动重装载值高8位
    TIM1_ARRL = FRE;                                    //设置自动重装载值低8位
    TIM1_BKR = 0x80;                                    //刹车寄存器 使能OC1输出 定时器不工作时输出无效电平
    TIM1_EGR = ( 1 << 0 );                              //产生更新事件
    TIM1_CR1 |= 0x01;                                   //使能计数器
}

//TIM1 CH2  PC7

void TIM1_CH2_FRE_DC_Change( unsigned int freq, unsigned int dc )
{
    TIM1_ARRH = freq >> 8;                     //设置频率
    TIM1_ARRL = freq;
    TIM1_CCR2H = dc >> 8;
    TIM1_CCR2L = dc;
}

void SysClkInit( void )
{
    CLK_SWR = 0xe1;       //HSI为主时钟源  16MHz CPU时钟频率
    CLK_CKDIVR = 0x00;    //CPU时钟0分频,系统时钟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, 下载次数: 15, 下载积分: 黑币 -5

TIM1_PWM输出(库函数).rar

643.47 KB, 下载次数: 16, 下载积分: 黑币 -5

评分

参与人数 1黑币 +20 收起 理由
admin + 20 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表