芝麻科技 发表于 2018-7-13 11:03:50

STM8S 定时器1互补输出pwm

void TIM1_PWM_Init(void)
{
    GPIO_Init(PWM1_PORT,PWM1_PIN,GPIO_MODE_OUT_PP_LOW_FAST);
    GPIO_Init(PWM1N_PORT,PWM1N_PIN,GPIO_MODE_OUT_PP_HIGH_FAST);
    TIM1_DeInit();

   //初始化TIM1时基单元预分频值(0x0000)   向上计数   自动重装载值(2000)重复计数器值(0)
    TIM1_TimeBaseInit(16, TIM1_COUNTERMODE_UP, 500, 0); //16M的cpu,16分频 1M500
    TIM1_ARRPreloadConfig(ENABLE);//使能自动重装

    // PWM1模式2   启用互补输出比较   脉冲宽度初值是1000   输出比较极性(低电平) 互补输出比较极性 (高电平) 输出比较空闲状态(置位) 互补输出比较空闲状态(复位)
    //PC6 输出PWM波形
    TIM1_OC1Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_ENABLE, 500-1, TIM1_OCPOLARITY_LOW, TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_SET, TIM1_OCNIDLESTATE_RESET);         


    TIM1_Cmd(ENABLE);             //启用或者关闭定时器1
    TIM1_CtrlPWMOutputs(ENABLE);//自动预装载允许位
}

这是源代码,在stm8s上面不能输出互补的两路,CH1和CH2的波形一样。怎么输出两路互补的波形。奇怪的是在stm8s003f3这个芯片上没有输出波形。求解答

芝麻科技 发表于 2018-7-13 11:04:38

本人新手一枚,求大神看一下

す疯Ⅱ恒す 发表于 2018-7-13 11:18:21


改成都是输出极性为低。试试看行不行吧。
TIM1_OC1Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_ENABLE, 500-1, TIM1_OCPOLARITY_LOW, TIM1_OCNPOLARITY_LOW, TIM1_OCIDLESTATE_SET, TIM1_OCNIDLESTATE_RESET);   


toofree 发表于 2018-7-13 12:27:41

请参考库中的工程——“STM8S_StdPeriph_Lib\Project\STM8S_StdPeriph_Examples\TIM1\TIM1_ComplementarySignals_DeadTime_Break_Lock”






芝麻科技 发表于 2018-7-13 12:48:55

toofree 发表于 2018-7-13 12:27
请参考库中的工程——“STM8S_StdPeriph_Lib\Project\STM8S_StdPeriph_Examples\TIM1\TIM1_ComplementarySi ...

就是参考标准库的代码,不行啊

芝麻科技 发表于 2018-7-13 12:49:14

す疯Ⅱ恒す 发表于 2018-7-13 11:18
改成都是输出极性为低。试试看行不行吧。
TIM1_OC1Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, TIM1 ...

试过了,不行

芝麻科技 发表于 2018-7-30 18:06:59

已经解决

非常感 发表于 2018-10-20 21:26:47

芝麻科技 发表于 2018-7-30 18:06
已经解决

能告诉我怎么解决的吗,老哥?

玄月11 发表于 2018-10-22 15:05:33


感谢楼主分享!虽然不知道什么时候用的到,不过还是感谢楼主分享精神!

robter 发表于 2018-10-24 07:41:38

看着挺复杂的,要好好学习了
页: [1]
查看完整版本: STM8S 定时器1互补输出pwm