当前位置:首页 > 单片机 > STM32CubeMX > 正文内容

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

ouyang4个月前 (09-29)STM32CubeMX1333



一、摘要

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

二、配置工程

  复制《STM32CubeMX系列教程0:创建工程》创建的工程目录GPIO_test,修改文件目录名称为TIM,双击打开GPIO_test.ioc。
  如果需要安装必备的开发环境,可参考《STM32开发环境安装》

1. 配置定时器参数

1-1. 使能定时器

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

1-2. 配置定时器参数

经过查看STM32单片机的数据手册,可知,TIM1挂载在APB2总线下,
enter description here
APB2的时钟为100MHz,如果想要使其500ms中断一次,那么可以通过10000分频后,使其速度将为10KHz,那么每计数5000次就是500ms。计算机中数字都是以0为第一位,所以参数都需要减一。
enter description here
①定时器分频值,这里为10000分频。
②计数模式,默认向上计数。
③定时器重载值,这里设为5000。
④内部时钟分频,默认不分频即可。
打开自动重载,设置auto_reload prelode 为ENABLE。
使能中断

1-3. 开启定时器中断

  启动定时器1的更新中断。
enter description here
  设置中断优先级,在实际工程项目中,当中断过多时,才需要设置中断优先级,测试工程无需设置。
enter description here

2. 生成工程

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

三、编写用户程序

1. 编写中断回调函数

  打开定时器HAL库,
enter description here
  找到HAL_TIM_PeriodElapsedCallback函数,双击跳转。这个函数HAL为用户提供的定时器的回调函数,所有定时器中断都在此函数中处理。
  复制函数名称void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)


enter description here

  在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灯的状态
   }
}


enter description here


2. 启动定时器

  回到主函数mian.c,在USER CODE BEGIN 2与USER CODE END 2之间加入用户初始化函数,这里添加定时器的启动代码。
HAL_TIM_Base_Start_IT(&htim1),通过这行代码,以中断的方式启动定时器。
enter description here
定时器的启动方式还有两种:

  1. HAL_TIM_Base_Start_DMA(); 以DMA的方式启动,可以通过DMA直接访问定时器的计数值。

  2. HAL_TIM_Base_Start();以轮询的方式启动,不进入中断,仅计数。

四、编译下载程序

  程序编译完成并下载后,LED灯每隔500ms改变一次状态。
  代码编写完成后,编译下载进入单片机。STM32单片机程序下载方法有多种,有需要请转《STM32程序下载》专题查阅,选择你所需要的下载方法。http://oynote.top/?tags=57

    扫描二维码至手机访问

    扫描二维码推送至手机访问。

    版权声明:本文由电子科技Blog发布,如需转载请注明出处。

    转载请注明出处:http://oynote.top/?id=355

    分享给朋友:

    相关文章

    STM32CubeMX系列教程2:外部中断EXIT

    STM32CubeMX系列教程2:外部中断EXIT

    一、摘要二、配置工程3-1. 中断优先级分组3-2. 中断优先级1. 修改引脚模式2. 配置GPIO3. 开启外部中断4. 生成工程三、编写用户程序1. 编写中断回调函数四、编译下载程序1. 注意一、...

    STM32CubeMX系列教程1:GPIO输入与输出

    STM32CubeMX系列教程1:GPIO输入与输出

    一、摘要二、创建工程1-1. 配置RCC与Debug1-2. 选择GPIO引脚与功能1-3. 配置GPIO1. 配置外设与IO2. 时钟配置3. 工程输出设置三、编写用户代码1. 插入用户代码2. 编...

    STM32CubeMX系列教程0:创建工程

    STM32CubeMX系列教程0:创建工程

    STM32Cube 是一个全面的软件平台,包括了ST产品的每个系列。平台包括了STM32Cube 硬件抽象层(一个STM32抽象层嵌入式软件,确保在STM32系列最大化的便携性)和一套的中间件组件(R...

    STM32CubeMX系列教程4:基本串行通信

    STM32CubeMX系列教程4:基本串行通信

    一、摘要二、配置工程2-1. 启动串口中断2-2. 编写用户代码2-3. 编写中断回调函数2-4. 编译下载1-1. 启用串口通信1-2. 编写用户代码1-3. 编译下载1. 轮询方式发送2. 中断方...

    STM32CubeMX系列教程5:串口接收不定长数据

    STM32CubeMX系列教程5:串口接收不定长数据

    一、摘要二、配置工程1. 配置串口及DMA2. 生成源码三、修改源码1. 重定向printf2. 添加串口接收所需变量3. 添加串口及IDLE处理函数4. 声明变量及函数5. 启用IDLE中断6. 修...

    发表评论

    访客

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。