当前位置: 首页 > news >正文

STM32Cube学习(2)——定时器中断

0、引言

单片机:STM32F407ZGT6;
仿真器:ST Link V2;
开发环境:STM32CubeIDE 1.10.1;
功能说明:采用定时器中断的方式,实现LED按照定时器频率闪烁。

前情提要:
STM32Cube学习(1)——点灯&配置

参考资料:
【STM32】HAL库 STM32CubeMX教程六----定时器中断
【STM32】HAL库——定时器溢出中断

1、STM32CubeIDE配置

打开CubeIDE,新建工程,选择匹配的芯片

1.1、配置时钟

在这里插入图片描述

在时钟配置中按照如下进行配置,使能HSE、PLLX72,外部时钟配置为8M,APB1分频器为/2,定时器频率设置为72M
在这里插入图片描述

1.2、定时器配置

时钟源选择内部时钟
在这里插入图片描述

1.3、参数设置

PSC(Prescaler,预分频器)=7199
Counter Mode(触发器模式)=up(向上计数)
Counter Period (arr,自动重载值)=4999
CKD(Internal Clock Division,时钟分频因子)=失能
auto-reload preload(自动重载arr值)=使能

TRGO:定时器的触发信号输出 在定时器的定时时间到达的时候输出一个信号
(如:定时器更新产生TRGO信号来触发ADC的同步转换,)
在这里插入图片描述
计算公式如下
其中Tout为计算得到的时间,Tclk为时钟频率
在这里插入图片描述
按照公式计算得,定时为500ms
在这里插入图片描述
使能定时器中断
在这里插入图片描述

1.4、生成配置

在这里插入图片描述
生成代码
在这里插入图片描述

2、代码编辑

在main.c中添加以下代码

int main(void)中初始化中断

  /* USER CODE BEGIN 2 */
  //开启定时器中断
  HAL_TIM_Base_Start_IT(&htim2);
  /* USER CODE END 2 */

回调函数,该回调函数会自动将中断标志位复位。

/* USER CODE BEGIN 4 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    static unsigned char ledState = 0;
    if (htim == (&htim2))
    {
        if (ledState == 0)
        	HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin,GPIO_PIN_RESET);
        else
        	HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin,GPIO_PIN_SET);
        ledState = !ledState;
    }
}
/* USER CODE END 4 */

相关文章:

  • jenkins安装部署(前端+后端)自动发布
  • docker logs 命令
  • 数据结构和算法-全文总结
  • 漏洞复现-CVE-2022-1388命令执行F5 BIG-IP iControl REST
  • labelme标注及标签的统一
  • 日常开发中比较使用的命令行
  • 项目管理证书 PMP 的含金量高吗?
  • RS笔记:深度推荐模型之多任务学习PLE模型 [RecSys 2020 最佳论文 腾讯]
  • 好用的word插件汇总
  • Flutter学习笔记 —— 完成一个简单的新闻展示页
  • pytorch 常见的网络层(卷积层,池化层,线性层,激活函数)
  • java计算机毕业设计计算机系教师教研科研管理系统源码+数据库+系统+lw文档+mybatis+运行部署
  • Redis持久化机制
  • 大数据随记 —— DataFrame 与 RDD 之间的相互转换
  • React 学习笔记 2022-08
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • Android系统模拟器绘制实现概述
  • angular学习第一篇-----环境搭建
  • Hibernate【inverse和cascade属性】知识要点
  • JS+CSS实现数字滚动
  • Js基础知识(一) - 变量
  • nginx 配置多 域名 + 多 https
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • vue数据传递--我有特殊的实现技巧
  • Web设计流程优化:网页效果图设计新思路
  • 从零开始在ubuntu上搭建node开发环境
  • 高程读书笔记 第六章 面向对象程序设计
  • 通过几道题目学习二叉搜索树
  • 走向全栈之MongoDB的使用
  • nb
  • AI算硅基生命吗,为什么?
  • mysql面试题分组并合并列
  • 阿里云ACE认证学习知识点梳理
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​iOS安全加固方法及实现
  • (06)Hive——正则表达式
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (区间dp) (经典例题) 石子合并
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • ***详解账号泄露:全球约1亿用户已泄露
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .ui文件相关
  • @SuppressWarnings(unchecked)代码的作用
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell
  • [100天算法】-x 的平方根(day 61)
  • [AIR] NativeExtension在IOS下的开发实例 --- IOS项目的创建 (一)
  • [CareerCup] 2.1 Remove Duplicates from Unsorted List 移除无序链表中的重复项
  • [EULAR文摘] 利用蛋白组学技术开发一项蛋白评分用于预测TNFi疗效
  • [HTML]Web前端开发技术18(HTML5、CSS3、JavaScript )HTML5 基础与CSS3 应用——喵喵画网页