Stm32f103c8t6的PB13和PB14能不能同时输出pwm啊,SOS!请求指点怎么配置呀。
1条回答 默认 最新
关注
- 这篇博客也许可以解决你的问题👉 :STM32F103C8 PB14 PB15PWM不输出解决过程记录
- 以下回答由chatgpt基于相关博客总结生成:
可以通过配置STM32F103C8T6的PB13和PB14端口同时输出PWM信号。具体的配置方式是:
-
在数据手册中查看PB14和PB15在TIM1中的默认复用功能,发现它们不需要设置重定向寄存器。
-
在代码中删除以下语句:
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还不能。
-
在查看参考手册中与PWM产生相关的寄存器和其解释,定位到库函数HAL_TIM_PWM_Start的位置,发现函数体中只发现了
TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
-
查看
TIM_CCxChannelCmd
函数的结构,发现它修改的是通道启停的寄存器。再定位到参考手册中对TIMx_CCERx
寄存器的描述,可以给对应的通道使能打钩可以在示波器上观察到波形输出和消失。 -
在main函数中添加以下代码:
TIM_CCxChannelCmd(htim1.Instance, TIM_CHANNEL_2, TIM_CCxN_ENABLE); TIM_CCxChannelCmd(htim1.Instance, TIM_CHANNEL_3, TIM_CCxN_ENABLE);
这样便可以使PB13和PB14端口同时输出PWM信号。
最后可以通过参考手册查看寄存器的值来确认是否配置成功。
-
解决 无用评论 打赏 举报