发新帖我要提问
12
返回列表
打印
[其他ST产品]

STM32 库函数学习 TIM篇

[复制链接]
楼主: c17
手机看帖
扫描二维码
随时随地手机跟帖
21
c17|  楼主 | 2023-1-30 16:42 | 只看该作者 回帖奖励 |倒序浏览
        mm++;
                HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_0);
                if(mm==10)
                {
                        HAL_TIM_OC_Stop_DMA(&htim3,TIM_CHANNEL_4);
                }
                if(mm==20)
                {
                        mm = 0;
                        HAL_TIM_OC_Start_DMA(&htim3,TIM_CHANNEL_4,pdata,1);
                }

使用特权

评论回复
22
c17|  楼主 | 2023-1-30 16:42 | 只看该作者
HAL_StatusTypeDef HAL_TIM_PWM_Init (TIM_HandleTypeDef * htim)

输出比较功能除了翻转GPIO之外还有常用的功能之一就是PWM输出。本函数是用来控制PWM初始化功能。
  htim3.Instance = TIM3;
  htim3.Init.Prescaler = 240-1;
  htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim3.Init.Period = 1000-1;
  htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
  if (HAL_TIM_Base_Init(&htim3) != HAL_OK)
  {
    Error_Handler();
  }

  if (HAL_TIM_PWM_Init(&htim3) != HAL_OK)
  {
    Error_Handler();
  }

使用特权

评论回复
23
c17|  楼主 | 2023-1-30 16:43 | 只看该作者
HAL_StatusTypeDef HAL_TIM_PWM_Start (TIM_HandleTypeDef * htim, uint32_t Channel)

开启PWM输出。另外设置PWM占空比值的方法是  __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_4,100);

         HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_4);

使用特权

评论回复
24
c17|  楼主 | 2023-1-30 20:56 | 只看该作者
HAL_StatusTypeDef HAL_TIM_PWM_Stop (TIM_HandleTypeDef * htim, uint32_t Channel)

停止PWM模式输出。

         HAL_TIM_PWM_Stop(&htim3,TIM_CHANNEL_4);

使用特权

评论回复
25
c17|  楼主 | 2023-1-30 20:56 | 只看该作者
HAL_StatusTypeDef HAL_TIM_PWM_Start_IT (TIM_HandleTypeDef * htim, uint32_t Channel)

开启PWM模式的中断。他的回调函数是void HAL_TIM_PWM_PulseFinishedCallback (TIM_HandleTypeDef * htim) 或者是 void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef * htim)


         HAL_TIM_PWM_Start_IT(&htim3,TIM_CHANNEL_4);

使用特权

评论回复
26
c17|  楼主 | 2023-1-30 20:58 | 只看该作者
HAL_StatusTypeDef HAL_TIM_PWM_Stop_IT (TIM_HandleTypeDef * htim, uint32_t Channel)

关闭PWM模式的中断。使用方法和函数21一样。

使用特权

评论回复
27
c17|  楼主 | 2023-1-30 21:03 | 只看该作者
HAL_StatusTypeDef HAL_TIM_PWM_Start_DMA (TIM_HandleTypeDef * htim, uint32_t Channel, uint32_t *pData, uint16_t Length)

打开PWM的DMA模式输出,
         uint32_t pdata[1];
HAL_TIM_PWM_Start_DMA(&htim3,TIM_CHANNEL_4,pdata,1);

使用特权

评论回复
28
c17|  楼主 | 2023-1-30 21:04 | 只看该作者
HAL_StatusTypeDef HAL_TIM_PWM_Stop_DMA (TIM_HandleTypeDef * htim, uint32_t Channel)

关闭PWM的DMA模式输出。

               
 HAL_TIM_PWM_Stop_DMA(&htim3,TIM_CHANNEL_4);

使用特权

评论回复
29
c17|  楼主 | 2023-1-30 21:04 | 只看该作者
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)

定时器基本定时中断功能的回调函数,相当重要的函数之一。
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) 
{
        if(htim->Instance == TIM7)
        {
    __HAL_TIM_CLEAR_FLAG(&TIM7_Handler,TIM_EventSource_Update );   //清除TIM7更新中断标志  
        HAL_TIM_Base_Stop(&TIM7_Handler);
    }
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则