×
嵌入式 > 嵌入式开发 > 详情

STM8S-定时器2的PWM

发布时间:2020-09-02 发布时间:
|
//软件环境: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;
}

}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
NXP推出Wi-Fi 6E三频段SOC 充分释放6GHz频谱潜力