STM32CubeMX系列教程3:基本定时器中断

摘要

  本章讲解STM32基本定时器中断的使用方法,实现通过定时器中断,定时500毫秒,让LED灯的状态每隔500ms改变一次。本章的工程可以从前一章节的工程中复制修改完成。

配置工程

  复制 STM32CubeMX系列教程0:创建工程 创建的工程目录GPIO_test,修改文件目录名称为TIM,双击打开GPIO_test.ioc。

配置定时器参数

使能定时器

打开Stm32Cubemx配置文件
在这里插入图片描述

①-②进入定时器设置
③使能定时器时钟源,选择内部时钟源Internal Clock。

配置定时器参数

  经过查看STM32单片机的数据手册,可知,TIM1挂载在APB2总线下,
在这里插入图片描述
  APB2的时钟为100MHz,如果想要使其500ms中断一次,那么可以通过10000分频后,使其速度降为10KHz,那么每计数5000次就是500ms。计算机中数字都是以0为第一位,所以参数都需要减一。
在这里插入图片描述

①定时器分频值,这里为10000分频。
②计数模式,默认向上计数。
③定时器重载值,这里设为5000。
④内部时钟分频,默认不分频即可。

打开自动重载,设置auto_reload prelode 为ENABLE。

开启定时器中断

启动定时器1的更新中断。
在这里插入图片描述

设置中断优先级,在实际工程项目中,当中断过多时,才需要设置中断优先级,测试工程无需设置。
在这里插入图片描述

生成工程

  配置好STM32CubeMX后,生成工程,打开工程。

编写用户程序

编写中断回调函数

   打开定时器HAL库,
在这里插入图片描述
  找到HAL_TIM_PeriodElapsedCallback函数,双击跳转。这个函数HAL为用户提供的定时器的回调函数,所有定时器中断都在此函数中处理。
  复制函数名称void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
在这里插入图片描述
  在main.c文件的末尾,在 USER CODE BEGIN 4 与 USER CODE END 4 之间重写中断回调函数。并在回调函数中写入用户代码。

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){   if(htim == &htim1)  //判断中断是否来自于定时器1
   {
   	HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);  //翻转LED灯的状态
   }
}

在这里插入图片描述

启动定时器

  回到主函数mian.c,在USER CODE BEGIN 2与USER CODE END 2之间加入用户初始化函数,这里添加定时器的启动代码。

HAL_TIM_Base_Start_IT(&htim1);       //通过这行代码,以中断的方式启动定时器。  

在这里插入图片描述

定时器的启动方式还有两种:

  1. HAL_TIM_Base_Start_DMA();
    以DMA的方式启动,可以通过DMA直接访问定时器的计数值。
  2. HAL_TIM_Base_Start();
    以轮询的方式启动,不进入中断,仅计数。通过程序主动查询寄存器获取状态

编译下载程序

  程序编译完成并下载后,LED灯每隔500ms改变一次状态。

  STM32单片机程序下载方法有多种,有需要请跳转

STM32程序下载0:STM32CubeProgrammer安装
STM32程序下载1:通过keil-ST-Link方式下载
STM32程序下载2:通过STM32CubePro-ST-Link下载
STM32程序下载3:通过STM32CubePro-UART下载
STM32程序下载4:通过STM32CubePro-USB下载

  选择你所需要的程序下载方法。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萌新程序猿~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值