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

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


文章目录

  • STM32CubeIDE基础学习-通用定时器中断实验
  • 前言
  • 第1章 工程配置
    • 1.1 工程外设配置部分
    • 1.2 生成工程代码部分
  • 第2章 代码编写
  • 第3章 实验现象
  • 总结


前言

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

定时器中断可以大大降低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灯翻转。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/794858.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Win10文件夹共享(有密码的安全共享)(SMB协议共享)

前言 局域网内(无安全问题,比如自己家里wifi)无密码访问,参考之前的操作视频 【电脑文件全平台共享、播放器推荐】手机、电视、平板播放硬盘中的音、视频资源 下面讲解公共网络如办公室网络、咖啡厅网络等等环境下带密码的安全…

python爬虫———post请求方式(第十四天)

🎈🎈作者主页: 喔的嘛呀🎈🎈 🎈🎈所属专栏:python爬虫学习🎈🎈 ✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天…

docker安装Nexus,maven私服

文章目录 前言安装创建文件夹设置文件夹权限docker创建指令制作docker-compose.yaml文件 查看网站访问网页查看密码 前言 nexus作为私服的maven仓库,在企业级应用中,提供了依赖来源的稳定性,为构建庞大的微服务体系,打下基础 安…

vue 浅解watch cli computed props ref vue slot axios nexttick devtools说明使用

Vue.js 是一个强大的前端框架,它提供了很多有用的功能和工具。你提到的这些特性(watch、cli、computed、props、ref、slot、axios、nextTick、devtools)在 Vue 中各自扮演着不同的角色。下面我会逐一解释这些特性如何在 Vue 中使用&#xff1…

20240405,数据类型,运算符,程序流程结构

是我深夜爆炸&#xff0c;不能再去补救C了&#xff0c;真的来不及了&#xff0c;不能再三天打鱼两天晒网了&#xff0c;真的来不及了呜呜呜呜 我实在是不知道看什么课&#xff0c;那黑马吧……MOOC的北邮的C正在进行呜呜 #include <iostream> using namespace std; int…

MySQL - 基础三

11、事务管理 CURD不加控制&#xff0c;会有什么问题&#xff1f; 当客户端A检查还有一张票时&#xff0c;将票卖掉&#xff0c;还没有执行更新数据库时&#xff0c;客户端B检查了票数&#xff0c;发现大于0&#xff0c;于是又卖了一次票。然后A将票数更新回数据库。这是就出现…

向量数据库 | AI时代的航道灯塔

向量数据库 | AI时代的航道灯塔 什么是向量检索服务拍照搜商品 你使用过向量数据库吗&#xff1f;使用体验&#xff1f;为什么向量数据库能借由大模型引起众多关注向量数据库在当前AI热潮中是昙花一现&#xff0c;还是未来AI时代的航道灯塔&#xff1f; 今天的话题主要是讨论向…

【排列回溯】Leetcode 46. 全排列

【排列回溯】Leetcode 46. 全排列 ---------------&#x1f388;&#x1f388;题目链接&#x1f388;&#x1f388;------------------- used数组&#xff0c;其实就是记录此时temp 里都有哪些元素使用了&#xff0c;一个排列里一个元素只能使用一次。 class Solution {List&…

【HTML】CSS样式(二)

上一篇我们学习了CSS基本样式和选择器&#xff0c;相信大家对于样式的使用有了初步认知。 本篇我们继续来学习CSS中的扩展选择器及CSS继承性&#xff0c;如何使用这些扩展选择器更好的帮助我们美化页面。 下一篇我们将会学习CSS中常用的属性。 喜欢的 【点赞】【关注】【收藏】…

【数据结构与算法】探讨数据结构中的虚拟头节点

&#x1f331;博客主页&#xff1a;青竹雾色间 &#x1f331;系列专栏&#xff1a;数据结构与算法 &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 &#x1f331;往期博客 深入浅出&#xff1a;单链表的实现和应用 目录 前言什么是虚拟头节点&#xff1f;虚…

深入浅出 -- 系统架构之分布式CAP理论和BASE理论

科技进步离不开理论支撑&#xff0c;而当下大行其道的分布式架构&#xff0c;透过繁荣昌盛表象&#xff0c;底层同样离不开诸多分布式理论撑持。当然&#xff0c;相信诸位在学习分布式相关技术时&#xff0c;必然学到过两个分布式领域中的基础理论&#xff0c;即&#xff1a;CA…

【蓝桥杯嵌入式】RTC——实时时钟

一、RTC简介 RTC RTC—real time clock&#xff0c;实时时钟&#xff0c;主要包含日历、闹钟和自动唤醒这三部分的功能&#xff0c;其中的日历功能我们使用的最多。日历包含两个32bit的时间寄存器&#xff0c;可直接输出时分秒&#xff0c;星期、月、日、年。 从Cubemx里的配置…

糟糕,Oracle归档满RMAN进不去,CPU98%了!

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

代码随想录算法训练营第三十一天| 理论基础、LeetCode 455.分发饼干、376. 摆动序列、53. 最大子序和

一、理论基础 文章讲解&#xff1a;https://programmercarl.com/%E8%B4%AA%E5%BF%83%E7%AE%97%E6%B3%95%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 1.贪心的定义 贪心的本质是选择每一阶段的局部最优解&#xff0c;从而达到全局最优解。例如&#xff0c;有一堆钞票&#xff0c…

基于SpringBoot Vue汽车租赁系统

一、&#x1f4dd;功能介绍 基于SpringBoot Vue汽车租赁系统 角色&#xff1a;管理员、普通管理员、用户 管理员&#xff1a;管理员进入主页面&#xff0c;主要功能包括对系统首页、个人中心、用户管理、普通管理员管理、汽车类别管理、汽车信息管理、租车订单管理、取消订单管…

网络安全 | 什么是威胁情报?

关注WX&#xff1a;CodingTechWork 威胁情报 威胁情报-介绍 威胁情报也称为“网络威胁情报”(CTI)&#xff0c;是详细描述针对组织的网络安全威胁的数据。威胁情报可帮助安全团队更加积极主动地采取由数据驱动的有效措施&#xff0c;在网络攻击发生之前就将其消弭于无形。威…

09 flink-sql 中基于 mysql-cdc 的 select * from test_user 的具体实现

前言 这也是最近帮一个朋友看问题 遇到的一个问题 然后 引发了一下 对于 flink-sql 里面的一些 常规处理的思考, 理解 原始问题主要是 在测试库可以使用 flink-sql 可以正常同步, 但是 在生产环境 无法正常同步数据 这个问题 我们后面单独 记录一篇文章 测试用例 下载…

网络抓包专题

导航目录 HTTP 原理HTTPS 原理TLS 原理网络抓包原理一. 什么是抓包&#xff1f;二. 抓包的原理对HTTP请求进行抓包对HTTPS请求进行抓包 三. Android设备抓包问题Android6.0 及以下系统Android7.0 及以上系统方式一&#xff1a;方式二 HTTP 原理 HTTP 详解 点击跳转 HTTPS 原理…

【QT入门】 Qt代码创建布局综合运用:仿写腾讯会议登陆界面

往期回顾&#xff1a; 【QT入门】 Qt代码创建布局之水平布局、竖直布局详解-CSDN博客 【QT入门】 Qt代码创建布局之栅格布局详解-CSDN博客 【QT入门】 Qt代码创建布局之分裂器布局详解-CSDN博客 【QT入门】 Qt代码创建布局综合运用&#xff1a;仿写腾讯会议登陆界面 一、界面分…

Linux基础篇:文件系统介绍——根目录下文件夹含义与作用介绍

Linux文件系统介绍——文件夹含义与作用 Linux文件系统是一个组织和管理文件的层次结构。它包括了目录、子目录和文件&#xff0c;这些都是按照一定的规则和标准进行组织的。以下是Linux文件系统的一些关键组成部分&#xff1a; 1./bin&#xff1a; 该目录包含了系统启动和运…