STM32:定时器中断与优先级


前言

利用HAL库开发实现功能:使用TIM2实现定时,每隔1秒实现双闪功能

一、基础知识

1、常见的定时器资源

1.系统滴答定时器 SysTick
集成在Cortex M3内核的定时器,主要目的是给RTOS提供时钟节拍做时间基准。比如HAL库函数中的HAL_Delay()就是基于这个定时器开发的。如果要做嵌入式Linux的相关项目,要和上位机进行通讯的话,这个函数就不能用了。

2.看门狗定时器 WatchDog

3.实时时钟 RTC

4.基本定时器 TIM6、TIM7

5.通用定时器 TIM2、TIM3、TIM4、TIM5
在基本定时器的基础上,实现输出比较、输入捕获、PWM生成、单脉冲模式输出等功能。这类定时器最具代表性,使用也最为广泛
6.高级定时器 TIM1、TIM8
请添加图片描述

2、定时器中断频率计算

首先,定时器中断频率的设置只需要关注:1)定时器输入时钟的频率;2)预分频值*(Prescaler);3)自动重装值(Counter Period)*
公式:
请添加图片描述
提示:1M=10的6次方 即:1M=1000000

例:
请添加图片描述

二、CubeMx硬件配置

1、硬件配置步骤:

1.设置Clock Source时钟源
2.根据需求设置参数Prescaler和Counter Period
3.配置NVIC嵌套向量中断控制器
4.用户重写定时器溢出回调函数,实现具体的中断逻辑

2、CubeMx硬件配置

请添加图片描述

请添加图片描述

3、定时器配置

由于我们需要使用TIM2定时,所以我们在Timers模块下找到TIM2
【第一步】
设置Clock Source时钟源为Internal Clock(内部时钟),如上图所示
我们的需求定时器频率为32MHz,间隔1秒(1000ms)翻转电平
所以根据定时器发生中断时间计算方法
【第二步】
计算方法看上文
设置参数Prescaler为芯片时钟评率减1(从0开始)
设置参数Counter Period为999,如上图所示(从0开始)
【第三步】
配置NVIC嵌套向量中断控制器,勾选使能TIM2中断
请添加图片描述

三、proteus仿真电路搭建

请添加图片描述

四、代码编写

1、定时器时间间隔参数

请添加图片描述

2、虚函数寻找及函数重写

stm32f1xx.it.c文件中找我们的定时器TIM2回调函数然后右键Go To Definition Of
请添加图片描述
找到时间定时函数HAL_TIM_PeriodElapsedCallback(htim)
请添加图片描述
然后再次右键Go To Definition Of,找到我们要的虚函数

请添加图片描述
将函数复制到main.c文件中,在Private User Code区域重写代码

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  if(htim->Instance == TIM2)
	{
		HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_7|GPIO_PIN_8);
	}
}

3、开启定时器

打开stm32f1xx_hal_tim.c文件,找到函数HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim)
请添加图片描述
复制,调用,参数设置为&htim2即可

  /* USER CODE BEGIN 2 */
  HAL_TIM_Base_Start_IT(&htim2);
  /* USER CODE END 2 */

五、仿真测试

1、配置芯片晶振频率与CubeMx一致

请添加图片描述
LED不停的闪烁
请添加图片描述

请添加图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值