按照官方的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(实测的哦)
有什么问题请留言哈