您的位置 首页 新品

STM8S-定时器2的PWM

软件环境:IARFORSTM8V10作者:Nicole功能:定时器2的PWM功能,控制小灯的亮灭间隔日期:20101110includeiostm8s207k

//软件环境:IAR FOR STM8 V1.0

//作者:Nicole

//功用:定时器2PWM功用,操控小灯的亮灭距离

//日期:2010.11.10

#include “iostm8s207k6.h”
void CLK_Init(void);
void TIM_Init(void);

// 函数功用:延时函数
// 输入参数:ms — 要延时的毫秒数,这儿假定CPU的主频为2MHZ

void DelayMS(unsigned int ms)
{
unsigned char i;
while(ms != 0)
{
for(i=0;i<250;i++)
{
}
for(i=0;i<75;i++)
{
}
ms–;
}
}
// 函数功用:初始化时钟

void CLK_Init()
{
CLK_CKDIVR = 0x08;//8Mhz
}

// 函数功用:初始化定时器2的通道2,用于操控LED的亮度
void TIM_Init()
{
TIM2_CCMR1 = TIM2_CCMR1 | 0x70;// Output mode PWM2.
// 通道2被设置成比较输出方法
// OC2M = 111,为PWM形式2,
// 向上计数时,若计数器小于比较值,为无效电平
// 即当计数器在0到比较值时,输出为1,否则为0
TIM2_CCER1 = TIM2_CCER1 | 0x03;// CC polarity low,enable PWM output*/
// CC1P = 1,低电平为有用电平
// CC1E = 1,敞开输出引脚

//初始化主动装载寄存器,决议PWM方波的频率,Fpwm=1000000/1000=1Khz

TIM2_ARRH = 0x03;// 主动重载寄存器ARR=0x03e8=1000
TIM2_ARRL = 0xe8;// 每记数500次发生一次中止,即1000ms

//初始化比较寄存器,决议PWM方波的占空比

TIM2_CCR1H = 0;
TIM2_CCR1L = 0;

// 初始化时钟分频器为1,即计数器的时钟频率为Fmaster=8Mhz/2*2*2=1000000

TIM2_PSCR = 0x03;

// 发动计数

TIM2_CR1 = TIM2_CR1 | 0x01;

}


main()

{
CLK_Init();// 初始化时钟
TIM_Init();// 初始化定时器

while(1)// 进入无限循环
{
TIM2_CCR1H = 0x01;
TIM2_CCR1L = 0xf4;
}

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/257868.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部