STM32定时器TIM控制

一、CubeMX的设置

1、新建工程,进行基本配置

2、配置定时器TIM2

1)定时器计算公式:(以下两条公式相同)

Tout = ((ARR+1) * PSC+1)) / Tclk
TimeOut = ((Prescaler + 1) * (Period + 1)) / TimeClockFren

Tout = TimeOut:定时器溢出时间(单位为us),多少触发(进入)一次TIM中断。
PSC = Prescaler:预分频系数(预分频器值)。
ARR = Period:自动重装载值,TIM计数当超过这个值,则清0重新计数。
Tclk = TimeClockFren:定时器的输入时钟频率(单位MHZ),当前使用的TIM2系统时钟频率。

eg: 

Tout = (71+1)*(999+1)/72 = 1000us
= 1 ms = 0.001 s

因此,定时器则0.001s触发一次中断。

2)配置分频系数为72-1,向上计数模式,计数周期为1000-1,使能自动重载模式。

3)开启定时器TIM2的中断

二、代码调试

在CubeMX中生成工程后,打开main.c添加中断响应之后所需的一些代码

main.c

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

上述添加的函数表示启动相应的定时器,“h”表示HAL库,“tim2”表示定时器2。

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
//定时器回调函数
//当到达指定定时值时进入中断执行中断任务
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{static int i = 0; //定义一个静态变量iif(htim == &htim2) {//执行对应代码if(++i == 1000) //1s{i = 0;//对led灯或者其他外设进行操作HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_0);//对GPIO口的电平进行反转(低-高,高—低)HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_1);HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_2);}}
}/* USER CODE END 0 */

上述以3个LED灯闪烁作为例子,可自行在CubeMX中设置

该函数为定时器的中断回调函数,当产生定时中断的时候,会自动调用这个函数。

在函数内部定义了一个静态变量:i ,当它等于1000的时候,才会执行if里面的代码。也就是说需要发生1000次中断,才会让LED的状态翻转。

前面根据公式计算出,一次定时中断的时间是0.001秒,所以1000次中断的时间是0.001*1000=1秒。也就是说每隔1秒,LED的状态翻转一次。

三、烧录结果

修改后,保存,编译、下载,重新上电。可以看到LED灯差不多每隔1秒翻转一次

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

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

相关文章

SQLyog中导入CSV文件入库到MySQL中

1.在数据库中新建一个表,设置列名(与待导入文件一致),字段可以多出几个都可以 2.右键表名,导入- - >导入使用本地加载的CSV数据 选择使用加载本地CVS数据 3.指定好转义字符,将终止设置为,号(英文状态下…

9-AJAX-1入门

AJAX 目录 AJAX 概念和 axios 使用认识 URLURL 查询参数常用请求方法和数据提交HTTP协议-报文接口文档案例 - 用户登录form-serialize 插件 01.AJAX 概念和 axios 使用 目标 了解 AJAX 概念并掌握 axios 库基本使用 讲解 什么是 AJAX ? mdn 使用浏览器的 XMLHttpRequest…

面试热题(每日温度)

请根据每日 气温 列表 temperatures ,重新生成一个列表,要求其对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。 输入: temperatures [73,74,75,71,69…

大数据Flink(六十三):SqlClient工具的使用

文章目录 SqlClient工具的使用 一、​​​​​​​入门

如何从cpu改为gpu,pytorch,cuda

1.cmd输入nvcc -V 2.得到 cuda版本后,去pytorch官网 3.根据自己的cuda进行选择 4.复制上述链接,进入cmd 5.cmd中输入activate XXX,这里的"XXX"指代自己在工程中用到的环境 6.进入后,将刚才链接粘贴,回车等待下载结束 …

搭建openGauss 5.0 一主一从复制集群

openGauss是一款支持SQL2003标准语法,支持主备部署的高可用关系型国产数据库。 多种存储模式支持复合业务场景,新引入提供原地更新存储引擎。NUMA化数据结构支持高性能。Paxos一致性日志复制协议,主备模式,CRC校验支持高可用。支…

【考研数学】高等数学第三模块——积分学 | Part II 定积分(反常积分及定积分应用)

文章目录 前言三、广义积分3.1 敛散性概念(一)积分区间为无限的广义积分(二)积分区间有限但存在无穷间断点 3.2 敛散性判别法 四、定积分应用写在最后 前言 承接前文,梳理完定积分的定义及性质后,我们进入…

mclust学习总结

mclust example1 import numpy as np import pandas as pd from matplotlib import pyplot as plt from sklearn.datasets import make_blobs X, y make_blobs(n_samples300, centers4, cluster_std0.60, random_state0) # n_features2是默认的 plt.scatter(X[:,0], X[:,1]) …

mac harbor的安装

harbor的安装 为什么要整这个呢,因为我在学习k8s,但是需要一个自己的镜像仓库。于是,最开始想到的就是在本地直接部署一个,还比较安全、快速。 直接下载了官方的项目,运行脚本发现出了异常,这种异常我已经…

解决生成式AI落地之困,亚马逊云科技提供完整解决方案

生成式AI技术无疑是当前最大的时代想象力之一。 资本、创业者、普通人都在涌入生成式AI里去一探究竟:“百模大战”连夜打响,融资规模连创新高,各种消费类产品概念不断涌现……根据Bloomberg Intelligence 的报告,2022年生成式AI 市…

利用logstash/filebeat/插件,将graylog日志传输到kafka中

1.graylog配置输出 在System-outputs,选择GELF Output,填写如下内容,其它选项默认 在要输出的Stream中,选择Manage Outputs 选择GELF Output,右边选择刚才创建好的test。 2.安装logstash,作为中间临时…

PLY模型格式详解【3D】

本文介绍PLY 多边形文件格式,这是一种用于存储被描述为多边形集合的图形对象。 PLY文件格式的目标是提供一种简单且易于实现但通用的格式足以适用于各种模型。 PLY有两种子格式:易于入门的 ASCII 表示形式和用于紧凑存储和快速保存和加载的二进制格式。 …