打印
[STM32L0]

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

[复制链接]
893|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
duo点|  楼主 | 2023-5-29 14:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
频率2.097Mhz , TIM2定时1s触发一次中断
1.TIM2初始化
HAL_TIM_Base_Init>HAL_TIM_ConfigClockSource>HAL_TIMEx_MasterConfigSynchronization


/**

  * @brief TIM2 Initialization Function

  * @param None

  * @retval None

  */

TIM_HandleTypeDef htim2;

void MX_TIM2_Init(uint16_t time)

{

  TIM_ClockConfigTypeDef sClockSourceConfig = {0};

  TIM_MasterConfigTypeDef sMasterConfig = {0};



  htim2.Instance = TIM2;

  htim2.Init.Prescaler = 2000;

  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;

  htim2.Init.Period = time - 1;

  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;

  htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;

  if (HAL_TIM_Base_Init(&htim2) != HAL_OK)

  {

    Error_Handler();

  }

  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;

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

  {

    Error_Handler();

  }

  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;

  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;

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

  {

    Error_Handler();

  }

}

复制代码

2.TIM2 中断处理函数

/**

  * @brief This function handles TIM2 global interrupt.

  */

void TIM2_IRQHandler(void)

{

  HAL_TIM_IRQHandler(&htim2);

}

复制代码

3.主函数main

int main(void)

{

         HAL_Init();

    /* Configure the system clock */

    SystemClock_Config();

    LED_Init();//LED初始化

        MX_TIM2_Init(1001); //1s一次

        HAL_TIM_Base_Stop_IT(&htim2);

        HAL_TIM_Base_Start_IT(&htim2);



        while(1)

        {}

}

复制代码

4.TIM中断回调处理函数

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)

{

    if(htim == &htim2)

    {

            HAL_GPIO_TogglePin(GPIOB,GPIO_PIN8);

    }

}

使用特权

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

本版积分规则

440

主题

1669

帖子

1

粉丝