文章目录

  • 前言
  • 一、基础知识
    • 1、常见的定时器资源
    • 2、定时器中断频率计算
  • 二、CubeMx硬件配置
    • 1、硬件配置步骤:
    • 2、CubeMx硬件配置
    • 3、定时器配置
  • 三、proteus仿真电路搭建
  • 四、代码编写
    • 1、定时器时间间隔参数
    • 2、虚函数寻找及函数重写
    • 3、开启定时器
    • 五、仿真测试
    • 1、配置芯片晶振频率与CubeMx一致

前言

利用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不停的闪烁

STM32:定时器中断与优先级相关推荐

  1. stm32定时器中断的配置步骤

    stm32定时器中断的配置步骤 1>TIM3 时钟使能 位于低速的APB1总线上(注意:高级定时器是在高速的APB2总线上): RCC_APB1PeriphClockCmd(RCC_APB1Pe ...

  2. STM32定时器中断显示时间

    前言 利用STM32的定时器中断,实现时间的显示.我们知道利用定时器中断只能进行tick的计算,然而用来显示时间我们应该怎么办呢?经过项目的实际运用,我发现利用定时器中断配合串口通讯也能实现时间显示. ...

  3. 7. STM32——定时器中断(1秒闪烁灯)

    STM32--定时器中断(1秒闪烁灯) 基本框架 1. 配置定时器时钟 在 stm32f10x_rcc.h 头文件中查找相关函数函数 2. 配置定时器结构体 在 stm32f10x_tim.h 头文件 ...

  4. 【CubeMX配置stm32定时器中断】

    CubeMX配置stm32定时器中断 一.使用CubeMX对STM32进行基础的配置 1.选择需要使用的定时器 选择TIM2和TIM3示例, 注意: TIM2和其它定时器选择时钟的方法不同,TIM3等 ...

  5. stm32定时器中断配置及使用

    stm32定时器中断配置及使用 定时器中断就是:可以周期性的执行某些功能,而不受main函数的影响. 我们以通用定时器time3为例说明 1.首先配置时钟源为内部时钟,分频和充装载值根据自己需要填入, ...

  6. STM32定时器中断

    目录 一.关于STM32定时器中断 1.定时器分类 2.通用定时器的功能特点 3.定时器中断的触发 4.定时时钟计算方法 二.CubeMX初始化配置 1.芯片选型(我们这里运用的STM32F103C8 ...

  7. stm32定时器中断_stm32F4之定时器的基本使用

    概述 上一篇说了stm32F4GPIO的使用,这篇说说定时器的使用 一. stm32F407的定时器资源介绍: ​ STM32F407有14个定时器,其中有12个16位的定时器,2个32位的定时器 这 ...

  8. STM32定时器中断实验-学习笔记

    目录 目录 目录 通用定时器简介 寄存器 控制寄存器 (TIMx_CR1) DMA/中断使能寄存器(TIMx_DIER) 预分频寄存器(TIMx_PSC) TIMx_CNT 寄存器 自动重装载寄存器( ...

  9. stm32定时器中断类型分析

    一直在用的stm32定时器的中断都是TIM_IT_Update更新中断,也没问为什么,直到碰到有人使用TIM_IT_CC1中断,才想到这定时器的中断类型究竟有什么区别,都怪当时学习stm32的时候不够 ...

最新文章

  1. 计算机绘画作品 星空,关于近期绘画作品《星空系列》的自述:
  2. 计算机学术硕士课题,硕士学术论文选题的原则分析
  3. tyvj1202 数数食物链
  4. [HDU]1723Distribute Message
  5. 医学方面的创业计划书_【就业创业】设计学院开展2019“汉军杯”大学生创业大赛 初评及复评工作...
  6. Codeforces Round 253 (Div. 2)
  7. 产品经理入门知识梳理(含思维导图
  8. 《普林斯顿微积分读本》 第一章:函数、图像和直线
  9. 别错过 孩子学19种才艺的最佳年龄
  10. TomcatCVE-2020-10487任意命令执行(msf反弹shell)
  11. Kubernetes Downward API的介绍及使用
  12. 魔域手游安卓修改服务器地址,魔域互通端游手游架设
  13. 锐捷交换机处理环路问题
  14. TortoiseSVN配置外部对比工具
  15. 科腾Joystick手柄连接ROS
  16. 汇编语言---指令格式和基本语法
  17. 打通MySQL架构和业务的任督二脉
  18. java oxygen下载_Eclipse 下载 安装 (Oxygen版本)
  19. 2020 CCPC 秦皇岛 K. Kingdom‘s Power(树形DP)
  20. HTMLCSS学习笔记及其HTML5和CSS3特性

热门文章

  1. c++两个数组对比去掉重复的元素_每日一道 LeetCode (8):删除排序数组中的重复项和移除元素...
  2. MVC,MVP 和 MVVM详解
  3. 职业发展加速器,埃森哲智能云服务创新中心热招云人才
  4. C++落选,2021年最想学习的五大编程语言
  5. CentOS 谢幕,Anolis OS 带来无限可能的未来
  6. 腾讯或推动斗鱼虎牙合并;拼多多推出“百亿补贴节”;Electron 9.2.0 发布| 极客头条
  7. 漫画:为什么计算机起始时间是 1970 年 1 月 1 日?
  8. 程序员常用的泛型机制究竟怎么玩?
  9. 面试者为何从来得不到反馈?
  10. TIOBE 3 月编程语言排行榜:Java 大涨,Delphi 辉煌不再!