STM32CubeIDE基础学习-通用定时器中断实验

STM32CubeIDE基础学习-通用定时器中断实验



前言

生活中很多应用都有用到定时器功能、计时功能等。

定时器中断可以大大降低CPU的执行负担,和前面学习的中断类似,当定时器计数触发了中断才会执行。

STM32CubeIDE基础知识学习回顾

实验目的:
学习使用定时器中断功能,实现定时控制LED翻转的功能。


第1章 工程配置

本实验以KEY按键实验的工程作为模板,在上面添加定时器相关配置即可。

1.1 工程外设配置部分

第一步:前面的LED、BEEP、KEY、RCC和SWD的相关配置都不用修改,保持默认的配置即可。

第二步:配置定时器相关功能。
按照下图标号步骤进行设置就可以。

在这里插入图片描述
主要是设置⑥处的相关参数,这些参数是需要通过公式计算出来最终确定的。本实验需要用到定时器中断功能,定时时间是500msPSC就定为7199,代入公式计算出ARR的值是4999。计数模式选择向上计数发方式,其它的参数没有用到,保持默认即可。

定时器溢出时间计算公式如下:
在这里插入图片描述

第三步:配置NVIC。

在这里插入图片描述

勾选使能中断即可。

第四步:设置优先级分组及优先级。

在这里插入图片描述
设置分组为2,本实验没有用到其它的中断,所以优先级可以随便设置,这里抢占优先级为2,响应优先级是2。

1.2 生成工程代码部分

定时器相关功能配置完成后,点击生成代码按钮就可以生成工程代码了。

可以看到代码工程生成多了一个tim.c文件和TIM3初始化函数,如下图所示:

在这里插入图片描述
进去tim.c文件可以看到里面主要存放定时器的初始化相关代码,如下图所示:

在这里插入图片描述

在这里插入图片描述

在stm32f1xx_it.h文件里面多了一个定时器中断服务程序,当触发定时器中断后,就会调用HAL库提供的HAL_TIM_IRQHandler公共中断处理函数。如下图所示:

在这里插入图片描述

进去该函数可以看到是定时器的中断处理,比如捕获通道、捕获事件、更新事件等,如下图所示:

在这里插入图片描述
如果工程无法跳转到该函数的定义处,可以按键盘快捷键ctrl+h进行搜索函数名。

本实验主要用到定时更新中断功能,定时时间到就触发中断,所以前面的那些和通道相关的就可以忽略不用管。

在这里插入图片描述

需要用到的回调函数是HAL_TIM_PeriodElapsedCallback函数,其它不用关心。

到此,就可以在工程里面添加相关代码实现功能了。

第2章 代码编写

进去HAL_TIM_PeriodElapsedCallback该函数可以发现该函数是弱定义的,如下图所示:

在这里插入图片描述

说明需要用户重新定义才行。

那么就可以将它拷贝到stm32f1xx_it.h文件里面进行功能代码的编写,如下图所示:

在这里插入图片描述

代码片示例如下:

/* USER CODE BEGIN 1 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim->Instance == TIM3)
	{
		HAL_GPIO_TogglePin(LED_GPIO_PORT, LED_GPIO_PIN);
	}
}
/* USER CODE END 1 */

若时间到了设置的500ms后触发中断,让LED翻转。

这里用到了LED相关的代码,则需要把LED的头文件引入到该文件中才行。如下图所示:

在这里插入图片描述

mian函数里面已经有了定时器初始化函数,while循环里面不用添加任何代码,如下图所示:

在这里插入图片描述

第3章 实验现象

编译下载代码后,可以看到开发板的LED灯每隔500ms间隔闪烁一次。


总结

定时器中断还是相对比较简单理解的,主要是应用到了定时计时器,计数到ARR的值就溢出。触发中断后就可以让LED灯翻转。

  • 26
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: STM32F103C8T6是一款基于ARM Cortex-M3内核的32位微控制器,而CubeIDE是针对STM32系列微控制器的集成开发环境。STM32F103CubeIDE例程是在这个开发环境下提供的一些示例代码,用于帮助开发人员快速上手并理解STM32F103系列微控制器的功能与特性。 这些例程涵盖了从基本的GPIO(通用输入输出)控制和串口通信,到高级的定时器和中断处理等各个方面的应用。它们可以作为开发人员学习和开发的起点,帮助了解和掌握STM32F103系列微控制器的编程方法和架构设计。 通过使用STM32F103CubeIDE例程,开发人员可以快速搭建起一个基础的硬件平台,并在此基础上进行二次开发。例如,通过了解GPIO例程,我们可以学习如何配置和控制芯片的输入输出引脚,实现LED的亮灭控制、按钮的输入检测等功能。而通过学习定时器和中断处理的例程,可以了解如何使用定时器产生精确的定时中断,实现各种定时功能,比如PWM呼吸灯、定时采集传感器数据等。 此外,STM32F103CubeIDE例程还提供了一些外设的驱动程序,如UART(通用异步收发器)和SPI(串行外设接口)等,这些驱动程序可以直接被集成到我们的应用中,简化了编程的过程,提高了开发效率。 总之,STM32F103CubeIDE例程是一个非常有用的资源,它可以帮助开发人员快速上手STM32F103系列微控制器的开发,并且可以在实际项目中提供一些基础的代码框架,为我们的开发和学习提供了很大的便利。 ### 回答2: STM32F103CubeIDE是适用于STMicroelectronics的STM32F1系列微控制器的集成开发环境。它提供了一套用于开发STM32F1系列芯片的例程。 首先,例程包含了一系列代码模板和功能实现的示例代码。这些示例代码覆盖了GPIO、串口通信、定时器、中断处理等基本功能的实现。开发者可以参考这些例程,快速了解每个功能模块的使用方法。 其次,例程还提供了外设的初始化函数。在初次开发时,我们需要配置各个外设的寄存器来使其正常工作。例程中提供了相应的初始化函数,可以帮助我们快速初始化外设。 同时,例程还包含了一些应用示例,例如温度传感器、LED灯控制等。这些示例演示了如何使用STM32F1系列微控制器实现各种应用场景,为开发者提供了基础的参考和学习资料。 最后,例程还提供了一套调试工具。使用STM32F103CubeIDE可以方便地进行代码的调试和跟踪。开发者可以在开发过程中使用调试工具对代码进行单步调试,以便于查找和修复错误。 综上所述,STM32F103CubeIDE例程是一个非常实用的开发工具,它提供了一套完整的例程和示例代码,帮助开发者快速上手STM32F1系列微控制器的开发,并且提供调试工具方便开发者进行调试和测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值