STM32 配置TIM定时中断常用库函数

单片机学习!


目录

​编辑

1. 函数TIM_DeInit

2. 函数TIM_TimeBaseInit 配置时基单元

3. 函数TIM_TimeBaseStructInit

4. 函数TIM_Cmd 运行控制

5. 函数TIM_ITConfig 中断输出控制

6. 时基单元的时钟选择函数

6.1 函数TIM_InternalClockConfig

6.2 函数 TIM_ITRxExternalClockConfig

6.3 函数 TIM_TIxExternalClockConfig

6.4 函数 TIM_ETRClockMode1Config

6.5 函数 TIM_ETRClockMode2Config

6.6 函数 TIM_ETRConfig

7.单独更改参数的函数

7.1 函数 TIM_PrescalerConfig

7.2 函数 TIM_CounterModeConfig

7.3 函数 TIM_ARRPreloadConfig

7.4 函数 TIM_SetCounter

7.5 函数 TIM_SetAutoreload

8.函数 TIM_GetCounter

9.函数 TIM_GetPrescaler

10.用来获取标志位和清除标志位的函数

10.1 函数 TIM_GetFlagStatus

10.2 函数 TIM_ClearFlag

10.3 函数 TIM_GetITStatus

10.4 函数 TIM_ClearITPendingBit


1. 函数TIM_DeInit

        函数用于恢复缺省配置。

2. 函数TIM_TimeBaseInit 配置时基单元

        函数用于时基单元初始化。

两个参数:

  1. TIMx选择某个定时器。
  2. 结构体,里面包含了配置时基单元的一些参数。

        TIM_Period 设置了在下一个更新事件装入活动的自动重装载寄存器周期的值。它的取值必须在 0x0000 和 0xFFFF 之间。

        TIM_Prescaler 设置了用来作为 TIMx 时钟频率除数的预分频值。它的取值必须在 0x0000 0xFFFF 之间。

        TIM_ClockDivision 设置了时钟分割。该参数取值见下表。

        TIM_CounterMode 选择了计数器模式。该参数取值见下表。

代码示例:

	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
	TIM_TimeBaseInitStructure.TIM_ClockDivision= TIM_CKD_DIV1;//指定时钟分频
	TIM_TimeBaseInitStructure.TIM_CounterMode= TIM_CounterMode_Up;//计数器模式
	TIM_TimeBaseInitStructure.TIM_Period= 10000-1;//ARR自动重装器的值,决定定时时间
	TIM_TimeBaseInitStructure.TIM_Prescaler= 7200-1;//PSC预分频器的值,决定定时时间,
	TIM_TimeBaseInitStructure.TIM_RepetitionCounter= 0;//重复计数器的值。
	TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStructure);

        定时时间可用计数器溢出频率公式计算,定时频率=72M/(PSC+1)/(ARR+1)

对应图中配置时基单元的部分:

3. 函数TIM_TimeBaseStructInit

        函数把结构体变量赋一个默认值。

        下表给出了TIM_TimeBaseInitStruct各个成员的缺省值:

4. 函数TIM_Cmd 运行控制

        函数用于使能计数器。

两个参数:

  1. TIMx选择某个定时器。
  2. NewState新的状态,也就是使能还是失能,使能计数器可以运行;失能计数器不运行。

对应图中运行控制的位置:

代码示例:

	TIM_Cmd(TIM2,ENABLE);	

5. 函数TIM_ITConfig 中断输出控制

        函数用于使能中断输出信号。

三个参数:

  1. TIMx选择某个定时器。
  2. TIM_IT选择要配置哪个中断输出。
  3. NewState新的状态,使能还是失能。

        输入参数 TIM_IT 使能或者失能 TIM 的中断。可以取下表的一个或者多个取值的组合作为该参数的值。

对应图中中断输出控制的位置,用于使能外设的中断输出。

代码示例:

	TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);

6. 时基单元的时钟选择函数

        可以选择RCC内部时钟、ETR外部时钟、ITRx其他定时器、TIx捕获通道。

对应图中时基单元的时钟选择部分

6.1 函数TIM_InternalClockConfig

        函数用于选择内部时钟,参数只有一个TIMx。

对应图中选择:

代码示例:

TIM_InternalClockConfig(TIM2);

6.2 函数 TIM_ITRxExternalClockConfig

        函数用于选择ITRx其他定时器的时钟。

两个参数:

  1. TIMx,选择要配置的定时器。
  2. TIM_InputTriggerSource,选择要接入哪个其他定时器。

        TIM_InputTriggerSource 选择 TIM 输入触发。

对应图中选择:

6.3 函数 TIM_TIxExternalClockConfig

        函数用于选择TIx捕获通道的时钟。

四个参数:

  1. TIMx,选择要配置的定时器。
  2. TIM_TIxExternalCLKSource选择TIx具体的某个引脚。
  3. TIM_ICPolarity,输入的极性。
  4. ICFilter,输入滤波器。

        对于外部引脚的波形,一般都会有极性选择和滤波器,这样更灵活一些

        TIM_TIxExternalCLKSource选择TIMx外部时钟源。

对应图中选择:

6.4 函数 TIM_ETRClockMode1Config

        函数用于选择ETR通过外部时钟模式1输入的时钟。

四个参数:

  1. TIMx,选择要配置的定时器。
  2. TIM_ExtTRGPrescaler外部触发预分频器,这里可以对ETR的外部时钟再提前做一个分频。
  3. TIM_ExtTRGPolarity,输入的极性。
  4. ExtTRGFilter,输入滤波器。

        TIM_ExtTRGPrescaler设置TIMx外部触发预分频。

        TIM_ExtTRGPolarity设置TIMx外部触发极性。

对应图中选择:

6.5 函数 TIM_ETRClockMode2Config

        函数用于选择ETR通过外部时钟模式2输入的时钟。

  1. TIMx,选择要配置的定时器。
  2. TIM_ExtTRGPrescaler外部触发预分频器,这里可以对ETR的外部时钟再提前做一个分频。
  3. TIM_ExtTRGPolarity,输入的极性。
  4. ExtTRGFilter,输入滤波器。

对应图中选择:


总结:

        对于ETR输入的外部时钟而言,函数 TIM_ETRClockMode1Config和函数TIM_ETRClockMode2Config是等效的,函数参数也是一样的,如果不需要触发输入的功能,那两个函数可以互换。


6.6 函数 TIM_ETRConfig

        函数用来单独用来配置ETR引脚的预分频器、极性、滤波器这些参数的。

7.单独更改参数的函数

        在初始化结构体里有很多关键的参数,如自动重装器的目标值和预分频值等,这些参数可能会在初始化之后还需要更改,以下函数可以方便更改这些关键参数。

7.1 函数 TIM_PrescalerConfig

        函数用来单独写预分频值。

两个参数:

  1. Prescaler就是要写入的预分频值。
  2. TIM_PSCReloadMode写入的模式。

        预分频器有一个缓冲器,写入的值是在更新事件发生后才有效的。所以这里有个写入模式,可以选择是听从安排在更新事件生效,或者是再写入后手动产生一个更新事件,让这个值立刻生效。

        TIM_PSCReloadMode选择预分频重载模式。

7.2 函数 TIM_CounterModeConfig

        函数用来改变计数器的计数模式。

两个参数:

  1. TIMx,选择要配置的定时器。
  2. TIM_CounterMode,选择新的计数器模式。

7.3 函数 TIM_ARRPreloadConfig

        自动重装寄存器预装功能配置。计数器的预装功能可以根据需要选择配置,调用这个函数,参数选择使能还是失能来控制计数器预装功能。

7.4 函数 TIM_SetCounter

        给计数器写入一个值,调用这个函数可以手动给一个计数值。

7.5 函数 TIM_SetAutoreload

        给自动重装寄存器写入一个目标值,调用这个函数可以手动给一个目标值。

8.函数 TIM_GetCounter

        获取当前计数器的值,调用这个函数可以查看当前计数器记到哪里了,返回值就是当前计数器的值。

9.函数 TIM_GetPrescaler

        获取当前预分频器的值,调用这个函数可以查看预分频值。

10.用来获取标志位和清除标志位的函数

10.1 函数 TIM_GetFlagStatus

        TIM_FLAG 待检查的标志位,下表给出了所有可以被函数TIM_ GetFlagStatus检查的标志位列表。

10.2 函数 TIM_ClearFlag

10.3 函数 TIM_GetITStatus

10.4 函数 TIM_ClearITPendingBit

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【图论笔记】克鲁斯卡尔算法(Kruskal)求最小生成树

【图论笔记】克鲁斯卡尔算法(Kruskal)求最小生成树 适用于 克鲁斯卡尔适合用来求边比较稀疏的图的最小生成树 简记: 将边按照升序排序,选取n-1条边,连通n个顶点。 添加一条边的时候,如何判断能不能添加…

python数据分析小案例:天猫订单数据综合分析

嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 本数据集共收集了发生在一个月内的28010条数据,包含以下: 7个字段说明 订单编号:订单编号 总金额:订单总金额 买…

if语句和switch语句来确定金额之下的优惠折扣

一、优惠规则 输入相应的金额,可以获得规则之下,金额相应的享受的折扣,需要先定义金额,然后就是使用if语句进行判断,使用switch语句选择判断规则之下对应的优惠折扣。 二、相关代码 public class DiscountPrice {p…

Dockerfile文件

什么是dockerfile? Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。 docker build命令用于从Dockerfile构建映像。可以在docker build命令中使用-f标志指向文件系统中任何位置的Docke…

ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders

1.关于稀疏卷积的解释:https://zhuanlan.zhihu.com/p/382365889 2. 答案: 在深度学习领域,尤其是计算机视觉任务中,遮蔽图像建模(Masked Image Modeling, MIM)是一种自监督学习策略,其基本思想…

rpc原理与应用

IPC和RPC? RPC 而RPC(Remote Procedure Call),又叫做远程过程调用。它本身并不是一个具体的协议,而是一种调用方式。 gRPC 是 Google 最近公布的开源软件,基于最新的 HTTP2.0 协议,并支持常见…

【计算机网络】HTTPS协议原理

目录 一. HTTPS的基础概念 二. 概念准备 1. 密码学 2. 为什么要加密 三. 常见加密方式 1. 对称加密 2. 非对称加密 四. HTTPS原理探究 五. CA认证 1. 数据指纹&&数据摘要 2. 证书 3. 签名与验证 4. 琐碎知识点 5. 总结——完整流程 结束语 一. HTTPS的基…

开发猿的平平淡淡周末---2023/12/9

上周回顾 完成了遗留的开发任务,基本全部完成进一步了解了系统当时设计的原理熟悉了代码的重构 2023.12.9 天气晴 温度适宜 前言 小伙伴们大家好,时间很快,又来到了周末,也是一个平平淡淡的周末。上周只更了一篇博客...原…

交换机基本原理和配置

目录 一、数据链路层功能 二、交换机的工作原理 三、交换机的四大功能 一、数据链路层功能 位于网络层与物理层之间 数据链路的建立、维护与拆除帧包装、帧传输、帧同步帧的差错恢复流量控制 二、交换机的工作原理 交换机通过数据帧的源 MAC 地址,学习到交换机端…

讲座 | 颠覆传统摄像方式乃至计算机视觉的“脉冲视觉”

传统相机拍摄视频时其实是以一定帧率进行采样,视频其实还是一串图片的集合,因此低帧率时会觉得视频卡,拍摄高速运动物体时会有运动模糊等等问题。然而你能想象这一切都可以被“脉冲视觉”这一前沿技术改变吗? 今天下午听了北京大学…

数据库数据恢复—Mysql数据库误删表数据的数据恢复案例

mysql数据库数据恢复环境: 本地服务器,windows server操作系统 ,部署有mysql单实例,数据库引擎类型为innodb,独立表空间,无数据库备份,未开启binlog。 mysql数据库故障: 工作人员使…

前端vue3——实现二次元人物拼图校验

文章目录 ⭐前言⭐vue3拖拽实现拼图💖 思路分解💖 布局结构💖 拖拽函数💖 校验函数💖 inscode整体代码 ⭐运行效果💖 随机顺序💖 拖拽中💖 校验失败💖 校验通过 ⭐总结⭐…

2.2 网络多线程(私聊、群发、发送文件、推送新闻、离线留言)

文章目录 一、私聊1.1 分析1.2 客户端1.2.1 MessageClientService 私聊类1.2.2 ClientConnectServerThread 线程类 1.3 服务端1.3.1 ServerConnectClientThread 线程类 1.4功能演示 二、群发消息2.1 分析2.2 客户端2.2.1 MessageClientService类2.2.2 ClientConnectServerThrea…

使用Microsoft Dynamics AX 2012 - 6. 运营规划

运营规划的主要职责是确保项目在需要的时候可用,同时达到高经济效益的目标。运营规划必须解决高供应准备度和低库存这两个相互冲突的优先事项。 运营规划中的业务流程 在Dynamics AX中,长期预测和短期总体规划由运营规划模块(“总体规划”&…

面试计算机网络八股文五问五答第一期

面试计算机网络八股文五问五答第一期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的! ⭐点赞⭐收藏⭐不迷路!⭐ 1.TCP和UDP的区别 TCP和UDP是两种网络传输协议,它们的主要区别在…

Android audio环形缓冲队列

1、背景 在学习audio的过程中,看到了大神zyuanyun的博客,在博客的结尾,大神留下了这些问题: 但是大神没有出后续的博文来说明audio环形缓冲队列的具体实现,这勾起了我强烈的好奇心。经过一段时间的走读代码&#xff…

Docker Network(网络)——8

目录: Docker 为什么需要网络管理Docker 网络架构简介 CNMLibnetwork驱动常见网络类型 bridge 网络host 网络container 网络none 网络overlay 网络docker 网络管理命令 docker network createdocker network inspectdocker network connectdocker network disconne…

22、文件上传漏洞——文件上传检测与绕过

文章目录 一、文件上传漏洞原理二、客户端检测及绕过(JS检测与绕过)三、服务端检测3.1 后缀名检测与绕过3.2 MIME类型检测与绕过3.3 文件内容检测与绕过3.4 00截断检测与绕过3.5 条件竞争检测与绕过 一、文件上传漏洞原理 上传文件时,如果服务…

虾皮什么商品好卖

在虾皮(Shopee)平台上,有许多商品类别都表现出了较好的销售情况。然而,随着时间和地区的变化,热销商品也会有所不同。本文将介绍一些在虾皮平台上表现较好的商品类别,并提供一些建议,帮助您在虾…

SystemUI下拉通知菜单栏定时自动隐藏

前言 在系统应用开发过程中,常常遇到一些特殊的需求,Android原生的应用并无此适配,此时需要对系统应用进行定制化开发。 目前遇到的这样一个需求:下拉通知菜单栏时,定时8秒后自动关闭通知菜单栏。通知菜单栏为Sytstem…