新聞中心

STM8S-定時器2的PWM

作者: 時間:2016-11-26 來源:網(wǎng)絡(luò) 收藏
//軟件環(huán)境:IAR FOR STM8 V1.0

//作者:Nicole

本文引用地址:http://2s4d.com/article/201611/321594.htm

//功能:定時器2PWM功能,控制小燈的亮滅間隔

//日期:2010.11.10

#include "iostm8s207k6.h"
void CLK_Init(void);
void TIM_Init(void);

// 函數(shù)功能:延時函數(shù)
// 輸入?yún)?shù):ms -- 要延時的毫秒數(shù),這里假設(shè)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--;
}
}
// 函數(shù)功能:初始化時鐘

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


// 函數(shù)功能:初始化定時器2的通道2,用于控制LED的亮度
void TIM_Init()
{
TIM2_CCMR1 = TIM2_CCMR1 | 0x70;// Output mode PWM2.
// 通道2被設(shè)置成比較輸出方式
// OC2M = 111,為PWM模式2,
// 向上計數(shù)時,若計數(shù)器小于比較值,為無效電平
// 即當(dāng)計數(shù)器在0到比較值時,輸出為1,否則為0
TIM2_CCER1 = TIM2_CCER1 | 0x03;// CC polarity low,enable PWM output*/
// CC1P = 1,低電平為有效電平
// CC1E = 1,開啟輸出引腳

//初始化自動裝載寄存器,決定PWM方波的頻率,F(xiàn)pwm=1000000/1000=1Khz

TIM2_ARRH = 0x03;// 自動重載寄存器ARR=0x03e8=1000
TIM2_ARRL = 0xe8;// 每記數(shù)500次產(chǎn)生一次中斷,即1000ms

//初始化比較寄存器,決定PWM方波的占空比

TIM2_CCR1H = 0;
TIM2_CCR1L = 0;

// 初始化時鐘分頻器為1,即計數(shù)器的時鐘頻率為Fmaster=8Mhz/2*2*2=1000000

TIM2_PSCR = 0x03;

// 啟動計數(shù)

TIM2_CR1 = TIM2_CR1 | 0x01;

}


main()

{
CLK_Init();// 初始化時鐘
TIM_Init();// 初始化定時器

while(1)// 進(jìn)入無限循環(huán)
{
TIM2_CCR1H = 0x01;
TIM2_CCR1L = 0xf4;
}

}



關(guān)鍵詞: STM8S定時器PW

評論


技術(shù)專區(qū)

關(guān)閉