lava 发表于 2012-4-27 22:46:10

求救!STM8S103F3 TIM2_CH1的PWM无法输出

STM8S103F3 TIM2_CH1的PWM无法输出,不知道我的程序哪里有问题,请高手指点,谢谢!

我想使用TIM2_CH1做PWM输出,可折腾了几天没有结果:)
//芯片型号:STM8S103F3P6,通道 TIM2_CH1
void pwm_init2(void)
{
        GPIO_Init(GPIOD, GPIO_PIN_4, GPIO_MODE_OUT_PP_HIGH_FAST);
        TIM2_DeInit();
        TIM2_TimeBaseInit(TIM2_PRESCALER_1, 127);
        TIM2_CCxCmd(TIM2_CHANNEL_1, ENABLE);
        TIM2_OC1Init(TIM2_OCMODE_PWM2, TIM2_OUTPUTSTATE_ENABLE, 64, TIM2_OCPOLARITY_LOW);
        TIM2_OC1PreloadConfig(ENABLE);
        TIM2_ARRPreloadConfig(ENABLE);
        TIM2_ITConfig(TIM2_IT_UPDATE, DISABLE);

        TIM2_GenerateEvent(TIM2_EVENTSOURCE_UPDATE);
        TIM2_Cmd(ENABLE);
}

qingzhong 发表于 2012-6-1 00:22:26

请注意要将芯片的PWM功能口打开,设置方法是用烧录软件选择这个口用的功能,然后再烧录一下,这样程序对了的话PWM就能出来了,

johnsonz999 发表于 2012-6-1 08:22:56

楼上的说的是PWM的复用的方法,不是复用脚用PWM和烧录配置位没有关系。我的就可以输出啊。

zlutian 发表于 2012-6-1 09:00:46

楼主,按规矩出牌,TIM2_CH1 管脚默认复用是SPI_CLK口,先用烧写器更改选项把它写成TIM2_CH1复用输出,再看看情况。

a13736925316 发表于 2012-11-4 17:44:14

void TIM2_Config(void)
{
        CLK_PCKENR1 |= 0x20;//TIM2 CLK Enable!
        asm("nop");
        while(!(CLK_PCKENR1 & 0x01));
        TIM2_CR1 = 0x00;
       
        TIM2_PSCR = 0x00;//16/2^4

        TIM2_ARRH = 0x00;
        TIM2_ARRL = 0xFF;//
       
        TIM2_CCR1H = 0x01;
        TIM2_CCR1L = 0xf4;
       
        TIM2_CCR2H = 0x1;
        TIM2_CCR2L = 0xf4;
       
        TIM2_CCR3H = 0x01;
        TIM2_CCR3L = 0xf4;
               
        TIM2_CCMR1 = 0x70;
        TIM2_CCMR2 = 0x70;
        TIM2_CCMR3 = 0x70;
       
        TIM2_CCER1 = 0x33;
        TIM2_CCER2 = 0x03;
       
       
        TIM2_IER = 0x00;
        TIM2_CR1 |= 0x01;
        //TIM2_BKR = 0xc0;
}

STM8S103F3P6输出 3路 PWM

亲测可用。

dengshaozhong 发表于 2012-11-11 21:18:31

希望楼上的可用,

lwg998 发表于 2012-11-16 18:00:34

楼主,按规矩出牌,TIM2_CH1 管脚默认复用是SPI_CLK口,先用烧写器更改选项把它写成TIM2_CH1复用输出,再看看情况。还得用烧写器来设置?那我用ST-LINK直接用KEIL下载 可以吗

joystring 发表于 2014-6-23 12:02:28

lwg998 发表于 2012-11-16 18:00
楼主,按规矩出牌,TIM2_CH1 管脚默认复用是SPI_CLK口,先用烧写器更改选项把它写成TIM2_CH1复用输出,再看 ...

TIM2_CH1 是PD4脚,不是SPI_SCK脚吧。。。。

joystring 发表于 2014-6-23 12:02:43

zlutian 发表于 2012-6-1 09:00
楼主,按规矩出牌,TIM2_CH1 管脚默认复用是SPI_CLK口,先用烧写器更改选项把它写成TIM2_CH1复用输出,再看 ...

TIM2_CH1 是PD4脚,不是SPI_SCK脚吧。。。。

joystring 发表于 2014-6-25 08:39:56

楼主解决没有,我也遇到这个问题,解决不了,规格书上,PD4(TIM2_CH1)不是复用IO,不是用的PC5 那个脚,应该有输出的,难道规格书搞错了?

qiancuit2012 发表于 2014-7-16 16:40:23

我最近也在搞这个现在还没有搞出来 这个pwm

138097 发表于 2014-8-6 20:05:23

我也是遇到了这个问题,换成TIM2的CH2和CH3都没问题,CH1就是死活没反应。
锲而不舍搞了几个小时,才发现了原来使用TIM1_CH1时,修改了字节选项AFR0,把PC6口复用为了TIM1_CH1,这个字节选项同时也把TIM2_CH1复用到了PC5,而不是原来的PD4了!!!所以只要你这个芯片之前使用过TIM1_CH1引脚(这个引脚必须经过复用才能使用),你的TIM2_CH1就应该不是在PD4了。
这尼玛实在太坑爹了

gzcc 发表于 2014-9-15 17:43:43

stm8的东西太多坑了

ldx24511 发表于 2015-7-23 10:28:22

首先要确认你的TIM1_CH1引脚是PD4还是PC5,如果是PD4就把PC5 TIM1_CH1复用功能关闭,如果是PC5就把PC5 TIM1_CH1复用功能打开,打开和关闭复用功能在配置项里面设定
页: [1]
查看完整版本: 求救!STM8S103F3 TIM2_CH1的PWM无法输出