最近由于项目需要,用到STM8S103F3P6,开发方式采用库函数方式开发,编译环境为ST Visual Develop+Cosmic CxSTM8 32K 4.3.4。初始化PWM的程序如下:
void TIM2_Init(void)
{
TIM2_TimeBaseInit(TIM2_PRESCALER_1, 999);/*1分频 ,计数值8000,频率=16M/8000=2kHZ*/
/* PWM1 Mode configuration: Channel1 */
/*TIM2 Channel1 duty cycle = [TIM2_CCR1/(TIM2_ARR + 1)] * 100 = 50 */
TIM2_OC1Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE,500, TIM2_OCPOLARITY_HIGH);
TIM2_OC1PreloadConfig(ENABLE);
/* PWM2 Mode configuration: Channel2 */
TIM2_OC2Init(TIM2_OCMODE_PWM2, TIM2_OUTPUTSTATE_ENABLE,500, TIM2_OCPOLARITY_HIGH);
TIM2_OC2PreloadConfig(ENABLE);
/* PWM3 Mode configuration: Channel3*/
TIM2_OC3Init(TIM2_OCMODE_PWM2, TIM2_OUTPUTSTATE_ENABLE,500, TIM2_OCPOLARITY_HIGH);
TIM2_OC3PreloadConfig(ENABLE);
TIM2_Cmd(ENABLE);
}
结果在用逻辑分析仪去抓PC5脚一直抓不到信号,但是TIM2的CH3通道PD3脚却可以抓到信号。
原因是:我在STVP这个烧录软件里面,把PC5选成了SPI引脚,要选成定时器引脚才可以输出PWM。
更改为TIM_CH1模式,再次烧录,看实验现象,成功输出。