小鬼310 2023-05-11 17:18 采纳率: 0%
浏览 69

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

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

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-05-11 20:02
    关注
    • 这篇博客也许可以解决你的问题👉 :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信号。

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

    评论
编辑
预览

报告相同问题?

问题事件

  • 创建了问题 5月11日