STM32实战项目-基本定时器

news2025/1/11 20:00:56

前言:

通过基本定时器TIM6,让三个LED灯每间隔1s闪烁一次。

目录

1.基本定时器参数配置

1.1框图分析

1.2参数配置

2.软件程序 

2.1整体框架 

2.2定时器结构体 

2.3定时器回调函数



1.基本定时器参数配置

1.1框图分析

TIM6作为基本定时器 它是挂载在APB1总线上的,框图如下所示:

 

时钟树的框图如下

 

 

1.2参数配置

功能介绍:

  我们如果想要配置 5ms的进入中断处理一次的话,如果我们不进行分频,对于72M的时钟频率大概是0.00几微妙就要检查一次,而且频率太高,所以我们要进行分频 分频后得到 CK-CNT如果我们预期想要得到1M的话,那就是 \frac{72M}{X+1}  其中x作为16位的时钟系数那他取值范围就是 1~65536之间的数值,我们想要得到 1ms 也就是 \frac{1}{1M}可以推出X为71 那x + 1 就是72也就是72M分频 。

对于CNT计数器,我们想要得到5ms的时钟 即 \frac{1}{1M}  * CNT = 5ms = \frac{1}{200} 秒 可以推出 CNT 为50000。至此TIM时钟方面的配置算是完成了。框图如下:

总结:快速计算公式

说明:初始化基本定时器6,自动重载,5ms中断一次。

计算如下:

1、定时器时钟 = 72MHz

2、计算时钟 = 72MHz/(71+1) = 1MHz

3、定时周期 = ((1/1000000Hz)*5000)s = (5/1000)s = 5ms

 

cubemax参数配置 

中断优先级介绍:

 

 

首先配置TIM6的优先级,此次实验只有一个时钟中断,所以我们将其抢占优先级设置成2就行,响应随便。如下图所示:

中断时间数配置:

,启动使能NVIC之后,完全按照我们计算好的参数去设置,分频系数。计数器 就能达到我们想要的5ms。

 

 

2.软件程序 

2.1整体框架 

 

2.2定时器结构体 

typedef enum
{
	TIMER0_10mS  	= (uint16_t)2,
	TIMER0_50mS  	= (uint16_t)10,
	TIMER0_100mS	= (uint16_t)20,
	TIMER0_200mS	= (uint16_t)40,
	TIMER0_500mS	= (uint16_t)100,
	TIMER0_1S     = (uint16_t)200,
	TIMER0_2S     = (uint16_t)400,
	TIMER0_3S     = (uint16_t)600,
	TIMER0_5S     = (uint16_t)1000,
	TIMER0_10S    = (uint16_t)2000,
	TIMER0_3min   = (uint16_t)36000,
}TIMER0_Value_t;

//定义结构体类型
typedef struct
{
  uint16_t volatile usMCU_Run_Timer;  //系统运行定时器
	
	void (*Timer6_Start_IT)(void);      //定时器6以中断模式启动
} Timer6_t;

/* extern variables-----------------------------------------------------------*/
extern Timer6_t  Timer6;

2.3定时器回调函数

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim->Instance == htim6.Instance)
	{
		//程序支持运行,led间隔1s闪烁
		if(++Timer6.usMCU_Run_Timer >= TIMER0_1S)
		{
			Timer6.usMCU_Run_Timer = 0;
			
			LED.LED_Flip(LED1);
			LED.LED_Flip(LED2);
			LED.LED_Flip(LED3);
		}
	}
}

 

 

 

 

 

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

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

相关文章

【Linux】-- 线程池

目录 铺垫 内存 线程的角度 线程池 基本代码结构 对于线程池的生产消费的完善 初步实现线程池生产消费 结合日志完善线程池 铺垫 内存 (以STL处理方式,引入提供效率的一种思想) 通过进行C语言与C语言的学习中,平时我们使…

C语言 深度剖析数据在内存中的存储(2)

本次博客是继上次博客,继续向下剖析数据在内存当中的存储。练习浮点型在内存中的存储练习代码1:int main() {char a -1;signed char b-1;unsigned char c-1;printf("a%d,b%d,c%d",a,b,c);return 0; }1.在本题中首先我们要知道的是%d打印的是有…

【数据结构之树】——什么是树,树的特点,树的相关概念和表示方法以及在实际的应用。

文章目录一、1.树是什么?2.树的特点二、树的相关概念三、树的表示方法1.常规方法表示树2.使用左孩子右兄弟表示法3. 使用顺序表来存储父亲节点的下标三、树在实际的应用总结一、1.树是什么? 树是一种非线性的数据结构,它是由n(n&…

MatCap模拟光照效果实现

大家好,我是阿赵 之前介绍过各种光照模型的实现方法。那些光照模型的实现虽然有算法上的不同,但基本上都是灯光方向和法线方向的计算得出的明暗结果。 下面介绍一种叫做MatCap的模拟光照效果,这种方式计算非常简单,脱离灯光的计算…

javaWeb核心05-FilterListenerAjax(Axios)json

文章目录Filter&Listener&Ajax1,Filter1.1 Filter概述1.2 Filter快速入门1.2.1 开发步骤1.2.2 代码演示1.3 Filter执行流程1.4 Filter拦截路径配置1.5 过滤器链1.5.1 概述1.5.2 代码演示1.5.3 问题1.6 案例1.6.1 需求1.6.2 分析1.6.3 代码实现1.6.3.1 创建F…

Linux 安装 nginx 详细教程

文章目录Linux 安装 nginx 详细步骤①安装依赖包②下载并解压安装包③安装 nginx④启动 nginx 服务⑤配置 nginx.conf提示:以下是本篇文章正文内容,Linux 系列学习将会持续更新 Linux 安装 nginx 详细步骤 ①安装依赖包 下载模块依赖性 Nginx 需要依赖…

resp无法连接Redis服务的解决方法

在保证Windows主机和Linux虚拟机能够相互ping通的前提下,resp仍无法连接到Linux上的redis服务,那么需要考虑以下原因: Linux防火墙问题,Linux未关闭防火墙,或防火墙未放通6379/tcp端口;redis配置问题&#…

Project ERROR: Unknown module(s) in QT: webenginewidgets

Qt系列文章目录 文章目录Qt系列文章目录前言一、问题定位二、解决方法1.引入WebEngine库2.重新打开工程3. 解决办法:运行结果前言 最近项目中需要用到:Qt中使用cesium三维引擎库,涉及到Qt和和JavaScript之间通信,工程源码报错&am…

202109-3 CCF 脉冲神经网络 66分题解 + 解题思路 + 解题过程

解题思路 根据题意&#xff0c;脉冲源的阈值大于随机数时&#xff0c;会向其所有出点发送脉冲 神经元当v>30时&#xff0c;会向其所有出点发送脉冲&#xff0c;unordered_map <int, vector > ne; //存储神经元/脉冲源的所有出点集合vector 所有脉冲会有一定的延迟&am…

opencv-图像操作

访问和修改像素值 我们先加载一个彩色图像&#xff1a; import cv2img cv2.imread(b.png) print(img)########### 打印结果 ########### [[[243 243 243][243 243 243][243 243 243]...[243 243 243][243 243 243][243 243 243]][[243 243 243][243 243 243][243 243 243].…

每天五分钟机器学习:你理解贝叶斯公式吗?

本文重点 贝叶斯算法是机器学习算法中非常经典的算法,也是非常古老的一个算法,但是它至今仍然发挥着重大的作用,本节课程及其以后的专栏将会对贝叶斯算法来做一个简单的介绍。 贝叶斯公式 贝叶斯公式是由联合概率推导而来 其中p(Y|X)称为后验概率,P(Y)称为先验概率…

mysql navicat忘记密码

mysql忘记密码是常用的事情&#xff0c;那么如何解决它呢&#xff1f;1、首先将MySQL的服务关闭&#xff0c;两种方法&#xff1a;&#xff08;1&#xff09;打开命令行cmd输入net stop mysql命令即可关闭MySQL服务。&#xff08;2&#xff09;打开任务管理器&#xff0c;找到服…

【观察】亚信科技:“飞轮效应”背后的数智化创新“延长线”

著名管理学家吉姆柯林斯在《从优秀到卓越》一书中提出“飞轮效应”&#xff0c;它指的是为了使静止的飞轮转动起来&#xff0c;一开始必须使很大的力气&#xff0c;每转一圈都很费力&#xff0c;但达到某一临界点后&#xff0c;飞轮的重力和冲力就会成为推动力的一部分&#xf…

海思ubootsd卡协议

在start_armboot()函数中调用mmc_initialize(0)初始化mmc;最终调用到int hi_mci_initialize(unsigned int dev_num)函数;内容如下:static int hi_mci_initialize(unsigned int dev_num) {struct mmc *mmc NULL;static struct himci_host *host;unsigned int regval;unsigned l…

磨皮插件portraiture2023最新中文版

Portraiture滤镜是一款 Photoshop&#xff0c;Lightroom 和 Aperture 插件&#xff0c;DobeLighttroom 的 Portraiture 消除了选择性掩蔽和逐像素处理的繁琐的手工劳动&#xff0c;以帮助您在肖像修整方面取得卓越的效果。它是一个强大的&#xff0c;但用户友好的插件照明.这是…

深度解析首个Layer3 链 Nautilus Chain,有何优势?

以流支付为主要概念的Zebec生态&#xff0c;正在推动流支付这种新兴的支付方式向更远的方向发展&#xff0c;该生态最初以Zebec Protocol的形态发展&#xff0c;并从初期的Solana进一步拓展至BNB Chian以及Near上。与此同时&#xff0c;Zebec生态也在积极的寻求从协议形态向公链…

观察UE4里“在外部存储Actor”功能的基础行为

目标 一般情况下&#xff0c;Actor保存于关卡文件中。 但是&#xff0c;如果将Actor的 packaging mode 设置为 External&#xff1a; 则此Actor就会存储在另一个文件而非关卡文件中。 本篇目标是&#xff1a; 观察此功能的基础行为观察外部文件的路径名规则 “在外部存储A…

Nacos安装指南,Windows安装

Nacos安装指南 1.Windows安装 1.1.下载安装包 在Nacos的GitHub页面&#xff0c;提供有下载链接&#xff0c;可以下载编译好的Nacos服务端或者源代码&#xff1a; GitHub主页&#xff1a;https://github.com/alibaba/nacos GitHub的Release下载页&#xff1a;https://githu…

一文打通Sleuth+Zipkin 服务链路追踪

1、为什么用 微服务架构是一个分布式架构&#xff0c;它按业务划分服务单元&#xff0c;一个分布式系统往往有很多个服务单元。由于服务单元数量众多&#xff0c;业务的复杂性&#xff0c;如果出现了错误和异常&#xff0c;很难去定位。主要体现在&#xff0c;一个请求可能需要…

学习服务器上运行论文代码(二)

文章目录程序运行异常VScode 报shell集成无法激活的问题无法加载文件 C:\Users\haoqi\Documents\WindowsPowerShell\profile.ps1&#xff0c;连接服务器插件程序运行异常 书接上回。 程序能跑起来&#xff0c;但是会出现两种异常。 异常一&#xff1a;运行进度条在走&#xff…