STM8S---定时器产生PWM(TIM2)

原创 2015年07月06日 18:56:49

1 说明

  • 采用STM8S内部时钟(HSI);
  • PWM模式2;
  • 占空比为50%,频率为2Hz(方便测试LED灯);
  • PD2口外接LED灯,PD2口输出PWM波;
  • 系统时钟初始化很重要:CLK_CKDIVR |= 0x08;

2 代码

/*
TIM2_CH3 PWM
PD2 output
*/
#include <STM8S003F3P.h>

void CLK_init(void)
{
    CLK_ICKR |= 0X01;           //使能内部高速时钟 HSI
    CLK_CKDIVR |= 0x08;         //16M内部RC经2分频后系统时钟为8M
    while(!(CLK_ICKR&0x02));    //HSI准备就绪 
    CLK_SWR=0xe1;               //HSI为主时钟源 
}

void Init_Tim2(void)
{
    TIM2_CCMR3 |=   0X70;   //设置定时器2三通道(PD2)输出比较三模式
    TIM2_CCMR3 |= 0X04;     //输出比较3预装载使能

    TIM2_CCER2 |= 0x03;     //通道3使能,低电平有效,配置为输出

    //初始化时钟分频器为1,即计数器的时钟频率为Fmaster=8M/64=0.125MHZ
    TIM2_PSCR = 0X06;   
    //初始化自动装载寄存器,决定PWM 方波的频率,Fpwm=0.125M/62500=2HZ
    TIM2_ARRH = 62500/256;
    TIM2_ARRL = 62500%256;
    //初始化比较寄存器,决定PWM 方波的占空比:5000/10000 = 50%
    TIM2_CCR3H = 31250/256;
    TIM2_CCR3L = 31250%256;


    // 启动计数;更新中断失能
    TIM2_CR1 |= 0x81;
    //TIM2_IER |= 0x00;        
}

void Init_GPIO(void)
{
    /*设置为推挽输出,PD2接了LED灯*/
    PD_DDR |= 0X04;             //设置PD2端口为输出模式
    PD_CR1 |= 0X04;             //设置PD2端口为推挽输出模式
    PD_CR2 &= 0XFD;

    PA_DDR |= 0X08;             //设置PA3端口为输出模式
    PA_CR1 |= 0X08;             //设置PA3端口为推挽输出模式
    PA_CR2 |= 0XF7;
}

void main(void)
{
    CLK_init();
    Init_GPIO();
    Init_Tim2();
    while (1);
}
版权声明:本文为博主[原创]文章,未经博主允许可以转载,注明博客出处:[http://blog.csdn.net/FreeApe]

【STM8L】STM8L之timer2产生PWM

本文介绍STM8L系列如何使用timer2产生38K频率的PWM
  • feilusia
  • feilusia
  • 2016年11月30日 03:17
  • 3181

STM8S的按键PWM调光灯历程

STM8SPWM应用前几天有个项目用到PWM,今天整理下,弄个氛围灯;记录下,以后忘记了返回来还能看看。...
  • rp517045939
  • rp517045939
  • 2016年11月16日 15:09
  • 2939

STM8S103之tim2PWM输出

本篇博文最后修改时间:2017年08月12日 10:58。 一、简介 本文以STM8S103F3P6编程为例,介绍STM8S103F3P6定时器2输出PWM。 二、实验平台 ...
  • qq_18842031
  • qq_18842031
  • 2017年08月12日 10:28
  • 798

STM8 中关于PWM1 和 PWM2的区别

STM8中PWM1和PWM2模式是时钟输出PWM波形控制的一个必选参数,使用库函数原型如下: void TIMx_OC2Init(TIM2_OCMode_TypeDef TIM2_OCMod...
  • Acelpoetry
  • Acelpoetry
  • 2016年12月14日 12:12
  • 1772

STM8S105 TIM1 TIM2 定时器的定时时间初始化

很多刚接触STM8单片机的入门者不知到如何使用TIM1和TIM2的定时器作为定时功能。下面介绍如下:TIM1的初始化1us:系统时钟是16M。void set_TIM1_nus(u16 nus){ /...
  • goodlinux
  • goodlinux
  • 2010年12月30日 21:24
  • 16815

STM8S TIM2 输出PWM初始化函数

参考网上例程总结出初始化函数 #define TIM2_CLK 16000000  void  timer2_Init(char channal, ulong hz,int pwm) {...
  • icerol
  • icerol
  • 2017年07月03日 21:40
  • 226

STM8S的TIM1 PWM设置(寄存器版本)

1. 概述脉冲宽度调制(PWM)模式可以产生一个由TIM1_ARR寄存器确定频率、由TIM1_CCRi寄存器确定占空比的信号。2. 芯片资料参考STM8S datasheet如下资料: 在TIM1...
  • Simon_ce
  • Simon_ce
  • 2017年02月08日 17:58
  • 2814

STM8S103F3P6Demo(tim2PWM输出)

  • 2017年08月12日 10:31
  • 4.01MB
  • 下载

STM8S通过官方LIB使用定时器1从CH4输出PWM到

在看STM8S的中文datasheet看得稀里糊涂的,这块功能调了两个晚上才出来。 贴出如下代码,给大伙参考: TIM1_DeInit(); TIM1_TimeBaseInit(16, TIM...
  • lan120576664
  • lan120576664
  • 2014年01月10日 09:19
  • 8185

STM32 TIM2通道重映射 PWM 无输出波形

使用TIM2输出PWM来驱动舵机转动,使用TIM2CH3 (PB11引脚)输出驱动波形,通过数据手册知道,PB10默认的复用功能为USART3_TX,可以通过重映射作为TIM2_CH3用。 TIM2...
  • bixiaole
  • bixiaole
  • 2015年09月11日 15:30
  • 3049
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:STM8S---定时器产生PWM(TIM2)
举报原因:
原因补充:

(最多只允许输入30个字)