这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » STM32L0系列之【TIM通用定时器】

共2条 1/1 1 跳转至

STM32L0系列之【TIM通用定时器】

院士
2023-05-23 23:50:28     打赏

频率2.097Mhz , TIM2定时1s触发一次中断
1.TIM2初始化
HAL_TIM_Base_Init>HAL_TIM_ConfigClockSource>HAL_TIMEx_MasterConfigSynchronization

  1. /**

  2.   * @brief TIM2 Initialization Function

  3.   * @param None

  4.   * @retval None

  5.   */

  6. TIM_HandleTypeDef htim2;

  7. void MX_TIM2_Init(uint16_t time)

  8. {

  9.   TIM_ClockConfigTypeDef sClockSourceConfig = {0};

  10.   TIM_MasterConfigTypeDef sMasterConfig = {0};


  11.   htim2.Instance = TIM2;

  12.   htim2.Init.Prescaler = 2000;

  13.   htim2.Init.CounterMode = TIM_COUNTERMODE_UP;

  14.   htim2.Init.Period = time - 1;

  15.   htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;

  16.   htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;

  17.   if (HAL_TIM_Base_Init(&htim2) != HAL_OK)

  18.   {

  19.     Error_Handler();

  20.   }

  21.   sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;

  22.   if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)

  23.   {

  24.     Error_Handler();

  25.   }

  26.   sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;

  27.   sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;

  28.   if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)

  29.   {

  30.     Error_Handler();

  31.   }

  32. }

复制代码


2.TIM2 中断处理函数

  1. /**

  2.   * @brief This function handles TIM2 global interrupt.

  3.   */

  4. void TIM2_IRQHandler(void)

  5. {

  6.   HAL_TIM_IRQHandler(&htim2);

  7. }

复制代码


3.主函数main

  1. int main(void)

  2. {

  3.          HAL_Init();

  4.     /* Configure the system clock */

  5.     SystemClock_Config();

  6.     LED_Init();//LED初始化

  7.         MX_TIM2_Init(1001); //1s一次

  8.         HAL_TIM_Base_Stop_IT(&htim2);

  9.         HAL_TIM_Base_Start_IT(&htim2);


  10.         while(1)

  11.         {}

  12. }

复制代码


4.TIM中断回调处理函数

  1. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)

  2. {

  3.     if(htim == &htim2)

  4.     {

  5.             HAL_GPIO_TogglePin(GPIOB,GPIO_PIN8);

  6.     }

  7. }




专家
2023-05-24 01:33:51     打赏
2楼

感谢楼主的分享,很实用了。


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]