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

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

  1. 首先必定是按照流程来,一定一定按照流程来!!! 需要注意的是加上通道数!!!! 这是流程上没有的,也是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(实测的哦) 有什么问题请留言哈

经验分享 程序员 微信小程序 职场和发展