最近由于项目需要,用到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模式,再次烧录,看实验现象,成功输出。

本文介绍了使用STM8S103F3P6微控制器通过TIM2定时器配置PWM输出的过程。在调试过程中发现PC5引脚无法输出信号的问题,并最终解决。关键在于正确配置引脚功能。
1万+

被折叠的 条评论
为什么被折叠?



