关于RT-Thread中PWM无法正常输出的学习

it2026-09-29  8

按照官方的PWM配置,并没有输出PWM,网上有比较多的办法,试了很多,有些还是不能实现输出,这里做个记录。记录自己完成PWM输出的过程,以及修改的地方。 关于STM32CubeMX配置就不多说了,网上有很多。

首先必定是按照流程来,一定一定按照流程来!!! 需要注意的是加上通道数!!!! 这是流程上没有的,也是RTT的一点小BUG吧

配上board.c中添加的代码,我用的是PA2定时2的通道3,需要使用的朋友修改对应定时器和GPIO!

void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) { if(htim_base->Instance==TIM2) { __HAL_RCC_TIM2_CLK_ENABLE(); } } void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) { GPIO_InitTypeDef GPIO_InitStruct = {0}; if(htim->Instance==TIM2) { __HAL_RCC_GPIOA_CLK_ENABLE(); /**TIM2 GPIO Configuration PA2 ------> TIM2_CH3 */ GPIO_InitStruct.Pin = GPIO_PIN_2; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); } }

到这里按照官方教程是配完了,至于怎么使用文档上有

实际运行没有输出PWM波形。 问题在这

添加以下代码

if (HAL_TIM_Base_Init(tim) != HAL_OK) /* 注意这里是定时器的初始化,别看混了!!! */ { LOG_E("%s tim init failed", device->name); result = -RT_ERROR; goto __exit; }

添加后如图 运行可以看到PWM,这是我设置的占空比一半的PWM(实测的哦) 有什么问题请留言哈

最新回复(0)