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

news2024/11/19 20:19:05

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.coloradmin.cn/o/1570522.html

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

相关文章

C语言基础(一)

C语言基础(一) 程序程序的设计步骤计算机中数据表示非数值数据数值转换(二、八、十六)进制转十进制十进制转换(二、八、十六)进制二进制和八、十六进制转换 基本数据类型关键字(32个&#xff09…

【复习linux相关命令】

查看命令位置,查找命令 which命令 查看命令的位置 [rootVM-12-15-opencloudos ~]# which cd /usr/bin/cd [rootVM-12-15-opencloudos ~]# which java /usr/local/java/jdk1.8.0_261/bin/java [rootVM-12-15-opencloudos ~]# which pwd /usr/bin/pwdfind查找文件 …

【html威廉希尔体育体育羽毛球页面带注册】学生网页设计作业源码APP是不是真的?

Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 校园篮球网页设计 | 足球体育运动 | 体育游泳运动 | 兵乓球 | 网球 | 等网站的设计与制作 | HTML期末大学生网页设计作业 HTML:结构CSS:样式 在操作方面…

Python人工智能应用----文本情感分析

1.问题引入 接着前两节课的内容,今天我们要构建一个人工智能系统。 它的目的是像人类一样,区分评价的情感是正面还是负面的。 接下来,我们要对提取的文本进行感情色彩的分析,这个就是文本情感分析,我们要使用机器学习…

Cisco路由器配置IPv6 Manual隧道

Cisco路由器配置IPv6 Manual隧道 IPv6与IPv4共存的方式 IPv6与IPv4共存方式大致有三种: 双栈:要求网络中所有设备均同时支持IPv4和IPv6转换:转换这种方式将IPv6协议的报头转换成IPv4协议报头。隧道:假定两个IPv6节点要使用IPv6…

6:算法基础--6.1:线性结构 ,6.2:查找算法

转上一节: http://t.csdnimg.cn/ql5Cdhttp://t.csdnimg.cn/ql5Cd 课程内容提要: 6:知识点考点详解 6.1:线性结构 通常分析时间复杂度的方法是从算法中选取-种对于所研究的问题来说是基本运算的操作,以 该操作重…

从多模态生物图数据中学习Gene的编码-MuSeGNN

由于数据的异质性,在不同的生物医学背景下发现具有相似功能的基因对基因表示学习提出了重大挑战。在本研究中,作者通过引入一种称为多模态相似性学习图神经网络的新模型来解决这个问题,该模型结合了多模态机器学习和深度图神经网络&#xff0…

2012年认证杯SPSSPRO杯数学建模C题(第二阶段)碎片化趋势下的奥运会商业模式全过程文档及程序

2012年认证杯SPSSPRO杯数学建模 C题 碎片化趋势下的奥运会商业模式 原题再现: 从 1984 年的美国洛杉矶奥运会开始,奥运会就不在成为一个“非卖品”,它在向观众诠释更高更快更强的体育精神的同时,也在攫取着巨大的商业价值&#…

(React组件基础)前端八股文修炼Day6

一 类组件与函数组件有什么异同 在React中,类组件和函数组件是创建组件的两种主要方式。随着React的发展,尤其是自Hooks在React 16.8中引入以来,函数组件的功能变得更加强大,使得它们能够更加方便地与类组件相竞争。下面是类组件…

打造专业运营团队,武汉星起航引领全球跨境电商未来趋势

近年来,随着全球经济的不断发展,跨境电商作为国际贸易的一种新模式,已然成为推动全球经济增长的新引擎。在这个浩荡的潮流中,武汉星起航以亚马逊自营店铺为依托,凭借丰富的实战运营经验和专业的团队,正积极…

蓝桥杯-dfs搜索模板题(一)

蓝桥杯-dfs搜索模板题&#xff08;一&#xff09; P2089 烤鸡P1088 火星人P1149 火柴棒等式P2036 PERKETP1135 奇怪的电梯结语 P2089 烤鸡 对于每个位置枚举数字 #include<bits/stdc.h>using namespace std;const int N1010;int n;int arr[N];//临时方案 int res0;//方案…

雪球acw_sc__v2 加密参数构造解析

打开雪球网站:https://xueqiu.com/today 首先打开Edge浏览器,清除应用程序里面的cookie 接着,跳转到源代码,刷新网页,进行调试,首先进入debugger模式,需要反debug调试。 输入相关代码,解除subug模式 点击保留日志,这里显示有两次请求,分别分析下。 第一个today返…

回归(maskrcnn)

一、写在前面 虽然粉丝量很少 但是这是一个很好的平台 记录自己的历程 我看了一个很好的讲解视频 我记录一下操作过程4-maskrcnn源码修改方法哔哩哔哩bilibili 作者已经注销帐号了 但内容很好 二、maskrcnn介绍 Mask R-CNN&#xff08;Mask Region-based Convolutional Neur…

经济学 博弈论 行为经济学

四种市场结构&#xff1a; 划分依据&#xff1a;生产者的数量&#xff0c;对价格的控制力&#xff0c;进入市场的难度&#xff08;新的商家进入市场的困难难度&#xff09; 1.完全竞争市场&#xff08;大多数农业产品&#xff1a;草莓&#xff09; 个体商家对价格没有控制力&a…

短视频素材在哪里找?八大平台解决你的创作需求

大家好&#xff01;在短视频创作的过程中&#xff0c;寻找优质的素材网站是非常重要的。那么&#xff0c;短视频素材在哪里找呢&#xff1f;推荐八个主流的视频素材分享网站&#xff0c;话不多说直接上干货。 蛙学网&#xff08;waxue.com&#xff09;——中国 首先要推荐的是…

Mybatis——鉴别器映射

鉴别器映射 有时一个单独的数据库查询会返回很多种不同数据类型的结果集。 discriminator鉴别器元素可以用来处理这种情况 数据库表结构 创建实体类、映射接口和映射文件 实体类employee package org.example.demo2;import lombok.Data;Data public class Employee {priv…

好菜每回味道不同--建造者模式

1.1 炒菜没放盐 中餐&#xff0c;老板需要每次炒菜&#xff0c;每次炒出来的味道都有可能不同。麦当劳、肯德基这些不过百年的洋快餐却能在有千年饮食文化的中国发展的那么好呢&#xff1f;是因为你不管何时何地在哪里吃味道都一样&#xff0c;而鱼香肉丝在我们中餐却可以吃出上…

C语言数据结构专题--顺序表(1基础)

前言 我们在对C语言有一定的了解之后&#xff0c;我们就可以开始数据结构的学习了&#xff0c;数据结构多用指针、结构体、动态内存开辟等知识&#xff0c;若对这些知识还不太了解的朋友&#xff0c;就需要加深其理解了&#xff0c;那么废话不多说&#xff0c;我们正式开始本节…

【C++学习】哈希的应用—位图与布隆过滤器

目录 1.位图1.1位图的概念1.2位图的实现3.位图的应用 2.布隆过滤器2.1 布隆过滤器提出2.2布隆过滤器概念2.3如何选择哈希函数个数和布隆过滤器长度2.4布隆过滤器的实现2.4.1布隆过滤器插入操作2.4.2布隆过滤器查找操作2.4.3 布隆过滤器删除 2.5 布隆过滤器优点2.6布隆过滤器缺陷…

小程序实现微信 【我的】界面

小程序实现仿微信 【我的】界面 一、简介 小程序实现仿微信 【我的】界面 采用 uni-app 实现&#xff0c;可以适用微信小程序、其他各种小程序以及 APP、Web等多个平台 具体实现步骤如下&#xff1a; 下载开发者工具 HbuilderX进入 【Dcloud 插件市场】 搜索 【小程序实现…