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] 举报

相关文章推荐

STM8S---选项字节(Option Byte)写操作之IO复用

功能实现目标  通过对选项字节的写操作来实现TIM2的CH3通道的PWM输出IO复用,可以设置为PA3或者PD2输出。 通过STVP方式操作链接选项字节  选项字节包括芯片硬件特性的配置和存储器的保...

STM8S---TIM2产生PWM与TIM1定时器周期中断的时钟问题

1 问题  在下面的测试程序中,如果将Init_CLK()函数中的 CLK_CKDIVR |= 0x08;去掉’|‘,则TIM1的功能实现跟预设定相同(10ms中断一次),但是TIM2的PWM频率就变...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

【STM8L】STM8L之timer2产生PWM

本文介绍STM8L系列如何使用timer2产生38K频率的PWM

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

说明 代码1 说明 采用STM8S内部时钟(HSI); PWM模式2; 占空比为50%,频率为2Hz(方便测试LED灯); PD2口外接LED灯,PD2口输出PWM波; 系统时钟初始化很重要:CLK_...

CC2530定时器T1产生PWM

最近搞PWM波输出,参考了一下网上的代码自己总结出CC2530 PWM的配置过程:(此处以T1为例) 配置PWM模式需参考CC2530用户手册中"表7-1 外部设备I/O引脚映射"来进行配置     ...

PWM定时器

S3C2440A 有 5 个 16 位定时器。其中定时器 0、1、2 和 3 具有脉宽调制 (PWM )功能。定时器 4 是一个无输出引脚的内部定时器。 定时器 0 和 1 共用一个 8...

PIC单片机之PWM PWM原理

1,什么是PWM      什么是PWM,专业点说脉宽调制,通俗点说 就是不断的输出高低电平。 比如 单片机 40ms的时间 输出高电平然后60ms的时间 输出低电平接着一直不断周期性的交替输出...

通用定时器(中断功能和PWM输出)

目录: 1:概述 2:常用中断功能 3:PWM输出  1:概述 在开发中,定时器的应用很广泛,简单总结为三个方面: 1.1:中断功能的应用,常用的是利用定时器中断,实现定时、记时、延时、超时判断,...

stm8 TIM2 PWM配置

欢迎使用Markdown编辑器写博客是 本M Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Mark...

TQ2440使用定时器产生PWM,控制蜂鸣器发声

GPBCON:引脚配置寄存器 GPBUP:端口使能上拉寄存器                               GPBDAT:端口数据寄...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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