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

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

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

相关文章

Configuring environment||ROS2环境配置

Goal: This tutorial will show you how to prepare your ROS 2 environment. Tutorial level: Beginner Time: 5 minutes ROS 2 relies on the notion (concept)of combining workspaces using the shell environment. “Workspace” is a ROS term …

C++进阶篇8---智能指针

一、引言 为什么需要智能指针? 在上一篇异常中,关于内存释放,我们提到过一个问题---当我们申请资源之后,由于异常的执行,代码可能直接跳过资源的释放语句到达catch,从而造成内存的泄露,对于这种…

C# Winform 日志系统

目录 一、效果 1.刷新日志效果 2.单独日志的分类 3.保存日志的样式 二、概述 三、日志系统API 1.字段 Debug.IsScrolling Debug.Version Debug.LogMaxLen Debug.LogTitle Debug.IsConsoleShowLog 2.方法 Debug.Log(string) Debug.Log(string, params object[]) …

FFmpeg抽取视频h264数据重定向

根据视频重定向技术解析中的 截获解码视频流的思路,首先需要解决如何输出视频码流的问题。 目前只针对h264码流进行获取,步骤如下: 打开mp4文件并创建一个空文件用于存储H264数据 提取一路视频流资源 循环读取流中所有的包(AVPacket),为…

线程安全3--wait和notify

文章目录 wait and notify(等待通知机制notify补充 wait and notify(等待通知机制 引入wait notify就是为了能够从应用层面上,干预到多个不同线程代码的执行顺序,这里说的干预,不是影响系统的线程调度策略&#xff08…

uni-app应用设置 可以根据手机屏幕旋转进行 (横/竖) 屏切换

首先 我们打开项目的 manifest.json 在左侧导航栏中找到 源码视图 然后找到 app-plus 配置 在下面加上 "orientation": [//竖屏正方向"portrait-primary",//竖屏反方向"portrait-secondary",//横屏正方向"landscape-primary",//横屏…

IDEA启动应用时报错:错误: 找不到或无法加载主类 @C:\Users\xxx\AppData\Local\Temp\idea_arg_filexxx

IDEA启动应用时报错,详细错误消息如下: C:\devel\jdk1.8.0_201\bin\java.exe -agentlib:jdwptransportdt_socket,address127.0.0.1:65267,suspendy,servern -XX:TieredStopAtLevel1 -noverify -Dspring.output.ansi.enabledalways -Dcom.sun.management…

基于以太坊的智能合约开发Solidity(事件日志篇)

//声明版本号(程序中的版本号要和编译器版本号一致) pragma solidity ^0.5.17; //合约 contract EventTest {//状态变量uint public Variable;//构造函数constructor() public{Variable 100;}event ValueChanged(uint newValue); //事件声明event Log(…

class064 Dijkstra算法、分层图最短路【算法】

class064 Dijkstra算法、分层图最短路【算法】 算法讲解064【必备】Dijkstra算法、分层图最短路 code1 743. 网络延迟时间 // Dijkstra算法模版(Leetcode) // 网络延迟时间 // 有 n 个网络节点,标记为 1 到 n // 给你一个列表 times&…

法律服务网站建设效果如何

律师事务所及法律知识咨询机构等往往是众多人群需求的服务,服务多样化及内容多元化,市场中也有大量品牌,在实际消费服务中大多以本地事务所为主,而线上咨询服务则一般没有区域限制,同行增多及人们知识获取渠道增加&…

C++-引用和指针区别

文章目录 1.变量的组成2.指针2.1 定义2.2 使用指针操作变量2.3 为什么使用指针 3.引用3.1 定义3.2 引用注意事项 4.引用和指针的区别 1.变量的组成 变量的组成:变量地址,变量名,变量值 例: int i 12;2.指针 2.1 定义 指针用于存…

如何为游戏角色3D模型设置纹理贴图

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时,有几种不同的风格&#xf…

Mybatis中的查询操作

单表查询 单表查询在《初始Mybatis》中已经介绍过&#xff0c;这里就不在介绍了。咱们这里只说单表查询中的“like查询”。like查询单独使用#{}报错 <select id"selectByKeyword" resultType"com.example.demo.entity.Userinfo">select * from use…

计网Lesson8 - NAT技术与链路层概述

文章目录 NAT 技术1. 因特网的接入方式2. 公网和私网3. NAT 技术 链路层1. 数据链路层概述2. 数据链路层的三个问题2.1 封装成帧2.2 透明传输2.3 差错检测 NAT 技术 1. 因特网的接入方式 光猫将电信号转换为数字信号发送给路由器 光纤入户 光纤传递的就是数字信号&#xff0c…

python+pytest接口自动化(12)-自动化用例编写思路 (使用pytest编写一个测试脚本)

经过之前的学习铺垫&#xff0c;我们尝试着利用pytest框架编写一条接口自动化测试用例&#xff0c;来厘清接口自动化用例编写的思路。 我们在百度搜索天气查询&#xff0c;会出现如下图所示结果&#xff1a; 接下来&#xff0c;我们以该天气查询接口为例&#xff0c;编写接口测…

每日一练2023.12.9—— 矩阵A乘以B【PTA】

题目链接&#xff1a;L1-048 矩阵A乘以B 题目要求&#xff1a; 给定两个矩阵A和B&#xff0c;要求你计算它们的乘积矩阵AB。需要注意的是&#xff0c;只有规模匹配的矩阵才可以相乘。即若A有Ra​行、Ca​列&#xff0c;B有Rb​行、Cb​列&#xff0c;则只有Ca​与Rb​相等时&a…

Linux Shell 基础命令

Linux 是一个开源的操作系统&#xff0c;其命令行界面是它的重要组成部分。在这个界面下&#xff0c;Shell 是一个能够与操作系统进行交互的工具。Shell 是一种程序&#xff0c;它能够接收用户输入的命令&#xff0c;并将这些命令发送到操作系统中进行处理。 在 Linux 中&…

VINS-MONO代码解读5----vins_estimator(marginalization部分)

文章目录 0. 前言1.1 Marginalization Pipiline 1. marg factor构建1.1 变量及维度理解1.2 IMUFactor1.3 ProjectionTdFactor(ProjectionFactor)1.4 MarginalizationFactor( e p e_p ep​推导更新&#xff0c;FEJ解决的问题)1.4.1 先验残差的更新1.4.2 先验Jacobian的更新 2. R…

windows install git

refer: https://developers.weixin.qq.com/miniprogram/dev/devtools/wechatvcs.html https://blog.csdn.net/weixin_40228200/article/details/128451324 在使用小程序的时候&#xff0c;需要初始化项目&#xff0c;需要注册Git账号 1.在本地确认cmd没有安装Git,进入Git官网…

docker:安装mysql以及最佳实践

文章目录 1、拉取镜像2、运行容器3、进入容器方式一方式二方式三容器进入后连接mysql和在宿主机连接mysql的区别 持久化数据持久化数据最佳实践 1、拉取镜像 docker pull mysql2、运行容器 docker run -d -p 3307:3306 --name mysql-container -e MYSQL_ROOT_PASSWORD123456 …