俺也出现这个问题,代码如下:
/* 定时器2的通道1设置成PWM输出方式,PD4用PWM输出驱动LED*/
#include "stm8s.h" //包含用到的外设的头文件
#include <iostm8s103F3.h>
unsigned int CCR1_Val = 300;
void Delay(unsigned int time)
{
volatile unsigned int i;
while(time--){
i=300;
while(i--);
}
}
void TIM2_PWM_INIT(void)
{
TIM2_TimeBaseInit(TIM2_PRESCALER_1, 1000);//预分频1,自动装载值0x018F(PWM频率=8M/0x00FF=31372.549Hz)
TIM2_SelectOCxM(TIM2_CHANNEL_1, TIM2_OCMODE_PWM2);//选择TIM2输出比较模式---通道1,PWM模式1
TIM2_CCxCmd(TIM2_CHANNEL_1, ENABLE); //输入捕捉输出比较通道1使能
TIM2_Cmd(ENABLE);//启动定时器2
}
void CLK_init(void)
{
CLK_HSICmd(ENABLE); //启动内部高速振荡器
CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV2); //配置系统时钟分频器(内部高速振荡器2分频=8M)
}
void GPIO_init(void)
{
GPIO_Init(GPIOD, GPIO_PIN_4, GPIO_MODE_OUT_PP_LOW_FAST);
}
void main(void)
{
unsigned int PWM_value=0;
CLK_init();
GPIO_init();
TIM2_PWM_INIT();
while(1)
{
Delay(10); //延时
TIM2_SetCompare3(PWM_value++); //改变PD4输出的PWM的占空比,
if(PWM_value>1000)PWM_value=0; //当占空比大于某一个值时,复位PWM_value
}
}
//-----------End Of File-------------------
求解
|