Stm32f103c8t6的PB13和PB14能不能同时输出pwm啊!!SOS

Stm32f103c8t6的PB13和PB14能不能同时输出pwm啊,SOS!请求指点怎么配置呀。

  • 这篇博客也许可以解决你的问题👉 :STM32F103C8 PB14 PB15PWM不输出解决过程记录
  • 以下回答由chatgpt基于相关博客总结生成:

    可以通过配置STM32F103C8T6的PB13和PB14端口同时输出PWM信号。具体的配置方式是:

    1. 在数据手册中查看PB14和PB15在TIM1中的默认复用功能,发现它们不需要设置重定向寄存器。

    2. 在代码中删除以下语句:

    HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
    HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2);
    HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_3);
    HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_4);
    

    这样便可以使PB14、PB15和PA8都能够正常输出PWM,但PA11还不能。

    1. 在查看参考手册中与PWM产生相关的寄存器和其解释,定位到库函数HAL_TIM_PWM_Start的位置,发现函数体中只发现了TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);

    2. 查看TIM_CCxChannelCmd函数的结构,发现它修改的是通道启停的寄存器。再定位到参考手册中对TIMx_CCERx寄存器的描述,可以给对应的通道使能打钩可以在示波器上观察到波形输出和消失。

    3. 在main函数中添加以下代码:

    TIM_CCxChannelCmd(htim1.Instance, TIM_CHANNEL_2, TIM_CCxN_ENABLE);
    TIM_CCxChannelCmd(htim1.Instance, TIM_CHANNEL_3, TIM_CCxN_ENABLE);
    

    这样便可以使PB13和PB14端口同时输出PWM信号。

    最后可以通过参考手册查看寄存器的值来确认是否配置成功。