[其他ST产品] STM32 库函数学习 TIM篇

[复制链接]
 楼主| c17 发表于 2023-1-30 16:42 | 显示全部楼层
  1.         mm++;
  2.                 HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_0);
  3.                 if(mm==10)
  4.                 {
  5.                         HAL_TIM_OC_Stop_DMA(&htim3,TIM_CHANNEL_4);
  6.                 }
  7.                 if(mm==20)
  8.                 {
  9.                         mm = 0;
  10.                         HAL_TIM_OC_Start_DMA(&htim3,TIM_CHANNEL_4,pdata,1);
  11.                 }
 楼主| c17 发表于 2023-1-30 16:42 | 显示全部楼层
HAL_StatusTypeDef HAL_TIM_PWM_Init (TIM_HandleTypeDef * htim)

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

  11.   if (HAL_TIM_PWM_Init(&htim3) != HAL_OK)
  12.   {
  13.     Error_Handler();
  14.   }
 楼主| 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);

  1.          HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_4);
 楼主| c17 发表于 2023-1-30 20:56 | 显示全部楼层
HAL_StatusTypeDef HAL_TIM_PWM_Stop (TIM_HandleTypeDef * htim, uint32_t Channel)

停止PWM模式输出。

  1.          HAL_TIM_PWM_Stop(&htim3,TIM_CHANNEL_4);
 楼主| 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)


  1.          HAL_TIM_PWM_Start_IT(&htim3,TIM_CHANNEL_4);
 楼主| c17 发表于 2023-1-30 20:58 | 显示全部楼层
HAL_StatusTypeDef HAL_TIM_PWM_Stop_IT (TIM_HandleTypeDef * htim, uint32_t Channel)

关闭PWM模式的中断。使用方法和函数21一样。
 楼主| 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模式输出,
  1.          uint32_t pdata[1];
  2. HAL_TIM_PWM_Start_DMA(&htim3,TIM_CHANNEL_4,pdata,1);
 楼主| c17 发表于 2023-1-30 21:04 | 显示全部楼层
HAL_StatusTypeDef HAL_TIM_PWM_Stop_DMA (TIM_HandleTypeDef * htim, uint32_t Channel)

关闭PWM的DMA模式输出。

               
  1. HAL_TIM_PWM_Stop_DMA(&htim3,TIM_CHANNEL_4);

 楼主| c17 发表于 2023-1-30 21:04 | 显示全部楼层
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)

定时器基本定时中断功能的回调函数,相当重要的函数之一。
  1. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
  2. {
  3.         if(htim->Instance == TIM7)
  4.         {
  5.     __HAL_TIM_CLEAR_FLAG(&TIM7_Handler,TIM_EventSource_Update );   //清除TIM7更新中断标志  
  6.         HAL_TIM_Base_Stop(&TIM7_Handler);
  7.     }
  8. }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部