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

STM32基本定时器中断

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、STM32定时器的结构?
    • 1. 51定时器的结构
      • 1.1如何实现定时1s的功能?
    • 2. stm32定时器的结构
      • 2.1 通用定时器
  • 二、使用步骤
    • 1.开启时钟
    • 2.初始化定时器
    • 3.中断配置(分组、优先级)
      • 3.1 配置中断源
      • 3.2配置中断优先级
      • 3.3 开启定时器
      • 3.4 中断服务函数
      • 3.5判断中断源, 清除中断源
  • 三、参考初始化函数
    • 3.1写成外设初始化函数,方便main函数调用
    • 3.2中断函数
    • 3.3 中断服务函数加入时分秒
  • 四、测试验证
    • 4.1时钟使能查看
    • 4.2 更新中断状态位
    • 4.3 其他状态和配置
  • 五、拓展
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

定时器有什么用?精准延时,PWM,做一个时钟:年月日,时分秒。时钟最基本的就是1s怎么来?


提示:以下是本篇文章正文内容,下面案例可供参考

一、STM32定时器的结构?

1. 51定时器的结构

在这里插入图片描述

1.1如何实现定时1s的功能?

在这里插入图片描述

  1. 选定时功能
  2. 装初值
  3. 配置定时器中断
  4. 中断里面计数,计数多少次根据定时的需要

2. stm32定时器的结构

在这里插入图片描述

2.1 通用定时器

部分芯片时没有基本定时器的

在这里插入图片描述
有基本定时器的型号
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. 时钟来源RCC
  2. 控制器,应该是要使能
  3. 分频器
  4. 装计数初值
  5. 中断

二、使用步骤

1.开启时钟

在这里插入图片描述

代码如下(示例):

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE);

2.初始化定时器

在这里插入图片描述
在这里插入图片描述

代码如下(示例):

//TIM_TimeBaseInitStruct.TIM_ClockDivision=
TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInitStruct.TIM_Period=50000-1;
TIM_TimeBaseInitStruct.TIM_Prescaler= 72-1;
//TIM_TimeBaseInitStruct.TIM_RepetitionCounter=TIM_TimeBaseInit(TIM6, &TIM_TimeBaseInitStruct);

3.中断配置(分组、优先级)

3.1 配置中断源

timer6只有溢出中断
在这里插入图片描述

	TIM_ITConfig( TIM6, TIM_IT_Update, ENABLE);

3.2配置中断优先级

	NVIC_InitStruct.NVIC_IRQChannel=TIM6_IRQn;NVIC_InitStruct.NVIC_IRQChannelCmd= ENABLE;NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=0;   //0-3NVIC_InitStruct.NVIC_IRQChannelSubPriority=  1;        //0-3NVIC_Init(&NVIC_InitStruct);

3.3 开启定时器

出了GPIO今后每个外设都要单独开启

	TIM_Cmd( TIM6, ENABLE);      //使能

3.4 中断服务函数

在启动文件找到中断向量表,然后完成中断服务函数

void TIM6_IRQHandler()
{if(TIM_GetITStatus( TIM6, TIM_IT_Update)){TIM_ClearITPendingBit(TIM6, TIM_IT_Update);num++;if(num==20){num=0;//led取反}}
}

3.5判断中断源, 清除中断源

在这里插入图片描述

三、参考初始化函数

3.1写成外设初始化函数,方便main函数调用

void timer6()
{/*1.开启APB1时钟   72MHz2.配置定时器6    TimeInit()  72预分配,0-65535     1000000us/50000us =CNT=20         定时时间/中断溢出时间=计数值3.中断配置       分组,优先级 。开启中断源4.中断服务函数   计数值, 1us  ,计数20次后让一个LED取反*/TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE);//TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;TIM_TimeBaseInitStruct.TIM_Period=50000-1;TIM_TimeBaseInitStruct.TIM_Prescaler= 72-1;//TIM_TimeBaseInitStruct.TIM_RepetitionCounter=TIM_TimeBaseInit(TIM6, &TIM_TimeBaseInitStruct);//开启中断:TIM_ITConfig( TIM6, TIM_IT_Update, ENABLE);TIM_Cmd( TIM6, ENABLE);      //使能NVIC_InitStruct.NVIC_IRQChannel=TIM6_IRQn;NVIC_InitStruct.NVIC_IRQChannelCmd= ENABLE;NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=0;   //0-3NVIC_InitStruct.NVIC_IRQChannelSubPriority=  1;        //0-3NVIC_Init(&NVIC_InitStruct);}

3.2中断函数

void TIM6_IRQHandler()
{if(TIM_GetITStatus( TIM6, TIM_IT_Update)){TIM_ClearITPendingBit(TIM6, TIM_IT_Update);num++;if(num==20){num=0;//led取反}}
}

3.3 中断服务函数加入时分秒

void TIM6_IRQHandler()
{if(TIM_GetITStatus( TIM6, TIM_IT_Update)){TIM_ClearITPendingBit(TIM6, TIM_IT_Update);num++;if(num==20){num=0;//led取反GPIOA->ODR^=0x0100;         //   异或,相同为0,不同为1 //拿0 去异或,原来是0,还是0;原来是1,还是1。既可以保持不变//拿1 去异或,原来是0,变成1;原来是0,变成1。起到取反的作用second++;one_second_flag=1;if(second==60){second=0;minute++;if(minute==60){minute=0;hour++;if(hour==24){hour=0;}}}}}
}

四、测试验证

在中断服务函数设定断点

在这里插入图片描述

4.1时钟使能查看

在这里插入图片描述

4.2 更新中断状态位

在这里插入图片描述
在这里插入图片描述

4.3 其他状态和配置

**加粗样式**

五、拓展

串口: 时钟

  1. 通过串口获取时分秒
  2. 通过串口修改时间

在这里插入图片描述

总结

深入浅出,从51单片机定时结构到stm32定时结构引导讲解了,STM32如何实现定时1s的原理,并工程实现

相关文章:

STM32基本定时器中断

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、STM32定时器的结构?1. 51定时器的结构1.1如何实现定时1s的功能? 2. stm32定时器的结构2.1 通用定时器 二、使用步骤1.开启时钟2.初始…...

学习历程_基础_精通部分_达到手搓的程度

1. 计算机网络(更新版) 1.1 计算机网络-43题 1.2 2. 操作系统(更新版) 3. ACM算法(更新版) 4. 数据库(更新版) 5. 业务开发算法(更新版) 6. 分布式类(更新版) 7. 设计模式(更新版&#xff…...

Redis中的List类型

目录 List类型的命令 lpush lpushx rpush lrange lpop rpop lindex linsert llen lrem ltrim lset 阻塞命令 阻塞命令的使用场景 1.针对一个非空的列表进行操作 2.针对一个空的列表进行操作 3.针对多个key进行操作. 内部编码 lisi类型的应用场景 存储(班级…...

3D模型格式转换工具HOOPS Exchange:如何将3D PDF转换为STEP格式?

3D CAD数据在制造、工程和设计等各个领域都扮演着重要的角色。为了促进不同软件应用程序之间的协作和互操作性,它通常以不同的格式进行交换。 HOOPS Exchange是一个强大的软件开发工具包,提供了处理和将3D CAD数据从一种格式转换为另一种格式的解决方案…...

DB-GPT介绍

DB-GPT介绍 引言DB-GPT项目简介DB-GPT架构关键特性私域问答&数据处理多数据源&可视化自动化微调Multi-Agents&Plugins多模型支持与管理隐私安全支持数据源 子模块DB-GPT-Hub微调参考文献 引言 随着数据量的不断增长和数据分析的需求日益增多,将自然语言…...

Java,面向对象,内部类

内部类的定义: 将一个类A定义在另一个类B里面,里面的那个类A就称为内部类(InnerClass),类B则称为外部类(OuterClass)。 内部类的使用场景: 类A只在类B中使用,便可以使用内部类的方法…...

唯一ID如何生成,介绍一下目前技术领域最常使用的几种方法

纵使十面大山,又如何,无妨… 概述 唯一ID(Unique Identifier)是在计算机科学和信息技术领域中用于标识某个实体或数据的唯一标识符。生成唯一ID的方法可以根据具体需求和应用场景的不同而有所不同。以下是一些目前技术领域中常用…...

【翻译】XL-Sum: Large-Scale Multilingual Abstractive Summarization for 44 Languages

摘要 当代的关于抽象文本摘要的研究主要集中在高资源语言,比如英语,这主要是因为低/中资源语言的数据集有限。在这项工作中,我们提出了XL-Sum,这是一个包含100万篇专业注释的文章摘要对的综合多样数据集,从BBC中提取&…...

配置OpenCV

Open CV中包含很多图像处理的算法,因此学会正确使用Open CV也是人脸识别研究的一项重要工作。在 VS2017中应用Open CV,需要进行手动配置,下面给出在VS2017中配置Open CV的详细步骤。 1.下载并安装OpenCV3.4.1与VS2017的软件。 2.配置Open CV环…...

1-时间复杂度和空间复杂度

为了找到最适合当前问题而估量“算法”的评价s 时间复杂度空间复杂度执行效率:根据算法编写出的程序,执行时间越短,效率就越高占用的内存空间:不同算法编写出的程序,执行时占用的内存空间也不相同。如果实际场景中仅能…...

EtherCAT主站SOEM -- 3 -- SOEM之ethercatconfig.h/c文件解析

EtherCAT主站SOEM -- 3 -- SOEM之ethercatconfig.h/c文件解析 一 ethercatconfig.h/c文件功能预览:二 ethercatconfig.h/c 中主要函数的作用:2.1.1 ec_config_init(uint8 usetable) 和 ecx_config_init(ecx_contextt *context, uint8 usetable)&#xff…...

洗地机哪个品牌好?家用洗地机选购攻略

随着家用洗地机的普及和市场的广泛认可,进入洗地机行业的制造商也越来越多。在面对众多洗地机品牌时,消费者常常感到困惑,不知道如何选择。面对众多选择,选择有良好保障的知名洗地机品牌是明智之举。知名品牌在质量、售后服务等方…...

Java数组的定义与常用使用方法

目录 一.什么是数组 二.数组的创建及初始化 数组的创建 数组的初始化 动态初始化: 静态初始化: 【注意】 三.数组的使用 数组中元素访问 遍历数组 四.数组作为方法的参数 参数传基本数据类型 参数传数组类型(引用数据类型) 作为方法的返回…...

[计算机网络]认识“协议”

认识“协议” 文章目录 认识“协议”序列化和反序列化网络计算器引入Sock类设计协议编写服务端类启动服务端编写客户端类启动客户端程序测试 序列化和反序列化 在网络体系结构中,应用层的应用程序会产生数据,这个数据往往不是简单的一段字符串数据&…...

“Notepad++“ 官网地址

notepad官网下载地址:https://notepad-plus-plus.org/downloads/ npp.8.5.8.Installer.x64 本下载地址- https://download.csdn.net/download/namekong8/88494023 1. Fix session file data loss issue. 2. Fix Explorer context menu "Edit with Notepad…...

基于单片机的自动感应门设计

博主主页:单片机辅导设计 博主简介:专注单片机技术领域和毕业设计项目。 主要内容:毕业设计、简历模板、学习资料、技术咨询。 文章目录 主要介绍一、自动感应门设计的功能概述二、系统总体方案2.1系统的总体计划2.2元器件的介绍2.2.1单片机的…...

【密评】商用密码应用安全性评估从业人员考核题库(二十-完结)

商用密码应用安全性评估从业人员考核题库(二十-完结) 国密局给的参考题库5000道只是基础题,后续更新完5000还会继续更其他高质量题库,持续学习,共同进步。 4640 单项选择题 在测评过程中遇到的PEM编码格式&#xff0c…...

Tigger绕过激活锁/屏幕锁隐藏工具,支持登入iCloud有消息通知,支持iOS12.0-14.8.1。

绕过激活锁工具Tigger可以用来帮助因为忘记自己的ID或者密码而导致iPhone/iPad无法激活的工具来绕过自己的iPhone/iPad。工具支持Windows和Mac。 工具支持的功能: 1.Hello界面两网/三网/无基带/乱码绕过,可以完美重启,支持iCloud登录、有消…...

VueX mapState、mapGetters、mapActions和mapMutaions 的使用

一、mapState和mapGetters 如果我们想要读取VueX中的State数据的Getters数据时,需要使用$store.state.数据名 和 $store.getters.数据名。 当我们State和getters中的数据多了以后,书写会很麻烦: 如果我们想要使用方便可以配置计算属性来简化…...

GMP标准的制药级层流细胞实验室核心要点

随着生物医药技术的飞速发展,制药行业对细胞疗法和细胞药物的需求日益增长。这推动了制药级层流细胞实验室的发展,其作为生物医药研发的关键基础设施,为制药企业提供了进行细胞培养、基因编辑、疫苗研发等工作的高效平台。本文就围绕GMP标准的…...

大话软工笔记—需求分析概述

需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色&#xf…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...

Robots.txt 文件

什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...

Kafka入门-生产者

生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐)​​ 在 save_images 方法中,​​删除或注释掉所有与 metadata …...