yan9556 发表于 2022-6-27 19:30:41

TIM2_CH3 CH4不能输出PWM的问题

芯片STM32F103ZET6 配置如下,感觉没啥问题啊,但是怎么弄就是不能输出PWM波,求教??

yuyu87 发表于 2022-6-27 20:56:07

这样查不出来问题的,找到手册,看寄存器一个一个对照,

yuyu87 发表于 2022-6-27 20:56:48

看引脚复用,时钟,映射等,都设置是否正确?

yan9556 发表于 2022-6-28 06:57:44

yuyu87 发表于 2022-6-27 20:56
看引脚复用,时钟,映射等,都设置是否正确?
(引用自3楼)

之前正点原子的历程,映射到PB5 用的是TIM3然后我想用TIM2的CH3和CH4就对应的改了一下,然后就输出不了PWM了,只能看寄存器操作了

初音之恋 发表于 2022-6-28 09:26:42

本帖最后由 初音之恋 于 2022-6-28 09:32 编辑

RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8, ENABLE);
    /* Time base configuration */
    TIM_TimeBaseStructure.TIM_Period =40000; //period=1/24M*960=25KHz
    TIM_TimeBaseStructure.TIM_Prescaler = 3;                                    //设置预分频:预分频=2,即为72/3=24MHz
    TIM_TimeBaseStructure.TIM_ClockDivision = 0;                              //设置时钟分频系数:不分频
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;               //向上计数溢出模式
    TIM_TimeBaseStructure.TIM_RepetitionCounter=0;
    TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure);
    /* PWM1 Mode configuration: Channel1 */
    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;                           //配置为PWM模式1
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
    TIM_OCInitStructure.TIM_OutputNState = TIM_OutputState_Disable;
    TIM_OCInitStructure.TIM_OCPolarity =TIM_OCPolarity_Low;                  //当定时器计数值小于CCR1时为高电平
    TIM_OCInitStructure.TIM_OCNPolarity= TIM_OCPolarity_Low;
    TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
    TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;

    TIM_OCInitStructure.TIM_Pulse = 0;                                       //设置跳变值,当计数器计数到这个值时,电平发生跳变
    TIM_OC2Init(TIM8, &TIM_OCInitStructure);                                    //使能通道1
    TIM_OC2PreloadConfig(TIM8, TIM_OCPreload_Enable);

    TIM_OCInitStructure.TIM_Pulse = 0;                                       //设置跳变值,当计数器计数到这个值时,电平发生跳变
    TIM_OC3Init(TIM8, &TIM_OCInitStructure);                                    //使能通道1
    TIM_OC3PreloadConfig(TIM8, TIM_OCPreload_Enable);

    TIM_OCInitStructure.TIM_Pulse = 0;                                       //设置跳变值,当计数器计数到这个值时,电平发生跳变
    TIM_OC4Init(TIM8, &TIM_OCInitStructure);                                    //使能通道1
    TIM_OC4PreloadConfig(TIM8, TIM_OCPreload_Enable);

    TIM_ARRPreloadConfig(TIM8, ENABLE);                                       //使能TIM3重载寄存器ARR
    TIM_CtrlPWMOutputs(TIM8, ENABLE);
    /* TIM3 enable counter */
    TIM_Cmd(TIM8, ENABLE);

初始化的参数是不是太少了,临时变量的结构体必须所有项都初始化,否则数据都是随机的,就会变成一会儿能用一会儿不能用

goodjob2 发表于 2022-6-29 10:22:36

TIM_CtrlPWMOutputs(TIM2, ENABLE);这个没开吧
页: [1]
查看完整版本: TIM2_CH3 CH4不能输出PWM的问题