STM32标准库学习笔记-4.定时器中断

news2024/9/21 0:39:07

参考教程:【STM32入门教程-2023版 细致讲解 中文字幕】

定时器简介

  1. TIM(Timer)定时器。
  2. 定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断。
  3. 16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时。
  4. 不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能。
  5. 根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型。

定时器类型

        STM32F103RCT6上总共有8个定时器,其中TIM1和TIM8是高级定时器,它们挂载在APB2高速总线上。而TIM2、TIM3、TIM4、TIM5是通用定时器,TIM6、TIM7是基本定时器,它们都挂载在APB1上,基本定时器的功能最少,高级定时器功能最多。

定时器框图

通用计时器

基本定时器

高级定时器

定时器基本结构

预分频器时序

PSC为预分频系数,(PSC+1)为分频值。PSC = 1时,信号为2分频。

计数器时序

  • ARR:重装寄存器值(需要+1)
  • PSC:预分频寄存器值(需要+1)
  • ARR预装时序(影子寄存器是否使用):

存在预装时序

不存在预装时序

        框图中结构存在阴影时表示该寄存器具有可选影子寄存器,更改该结构对应的寄存器时,使用影子寄存器时,会在TIM当前计数周期结束前保持原有值,计数周期结束后影子寄存器才装入修改值,影子寄存器作为缓冲,该修改才生效。

#include "stm32f10x.h"    // Device header

void Timer2_Init(void)
{
    //启用系统时钟
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
    
    //让TIM2使用内部时钟
    TIM_InternalClockConfig(TIM2);
    
    //时基单元初始化
    TIM_TimeBaseInitTypeDef TIM2_TimeBaseInitStructure;
    TIM2_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;//定时器时钟预分频设置为1,也就是不分频,直接使用相应总线频率
    TIM2_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM2_TimeBaseInitStructure.TIM_Period = 10000 - 1;    //重装值9999
    TIM2_TimeBaseInitStructure.TIM_Prescaler = 7200 - 1;    //预分频系数7199,72MHz => 10KHz
    TIM2_TimeBaseInitStructure.TIM_RepetitionCounter = 0x00;//TIM1,TIM8有效;STM32定时器用TIM_RepetitionCounter设置重复计数器的值时,当TIM_RepetitionCounter为N时,定时器计数结束后不产生中断而是再重复N次后产生一次中断 。
    TIM_TimeBaseInit(TIM2,&TIM2_TimeBaseInitStructure);
    
    //定时器中断控制
    TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
    TIM_ClearFlag(TIM2,TIM_IT_Update);  //清除标志位避免马上进中断
    
    //使能定时器
    TIM_Cmd(TIM2,ENABLE);
    
    //NVIC配置
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    NVIC_InitTypeDef NVIC_InitTypeDefStructure;
    NVIC_InitTypeDefStructure.NVIC_IRQChannel = TIM2_IRQn;
    NVIC_InitTypeDefStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_InitTypeDefStructure.NVIC_IRQChannelPreemptionPriority = 1;
    NVIC_InitTypeDefStructure.NVIC_IRQChannelSubPriority = 1;
    NVIC_Init(&NVIC_InitTypeDefStructure);
    
}

//中断服务程序模板
/*void TIM2_IRQHandler(void)
{
    if(TIM_GetITStatus(TIM2,TIM_IT_Update) == SET)
    {
        //...
        TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
    }
}*/

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

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

相关文章

vue3响应式工具 toRefs() 和 toRef()

前言 直接解构响应式对象的属性进行赋值给新的变量&#xff0c;会导致新变量失去响应式。 当修改新变量的值时&#xff0c;不会触发原始响应式对象的更新&#xff0c;从而在模板中也不会有相应的视图更新。 示例&#xff1a; <template><div><p>姓名: {{ …

垂直行业数字化表现抢眼 亚信科技全年利润展望乐观

大数据产业创新服务媒体 ——聚焦数据 改变商业 2024年8月14日&#xff0c;亚信科技控股有限公司&#xff08;股票代码&#xff1a;01675.HK&#xff09;公布了公司截至2024年6月30日的中期业绩。 财报数据显示&#xff0c;2024年上半年&#xff0c;亚信科技的营业收入为人民币…

Java巅峰之路---进阶篇---面向对象(一)

static关键字 介绍 static表示静态&#xff0c;是java中的一个修饰符&#xff0c;可以修饰成员方法&#xff0c;成员变量。 其中&#xff0c;被static修饰的成员变量&#xff0c;叫做静态变量&#xff1b;被static修饰的成员方法&#xff0c;叫做静态方法。 静态变量 调用…

水凝胶和皮肤再生有关系?那它是什么玩意儿?

大家好&#xff0c;今天我们来聊聊皮肤再生与水凝胶的关系。这篇《Hydrogel-Based Skin Regeneration》是发表于《International Journal of Molecular Sciences》上的一篇文章。皮肤作为人体最大的器官&#xff0c;其伤口愈合至关重要&#xff0c;但传统治疗方法有局限性。组织…

数据结构(Java):揭开二叉搜索树删除机制的奥秘

目录 1、二叉搜索树 1.1 概念 2、代码模拟实现 2.1 插入操作 2.2 查找操作 2.3 &#x1f31f;删除操作&#x1f31f;&#xff08;难点&#xff09; 2.3.1 要删除节点的左子树为空 2.3.2 要删除节点的右子树为空 2.3.3 要删除节点的左右子树均不为空 2.3.4 删除操作代码…

认知杂谈17

今天分享 有人说的一段争议性的话 I I 男人撑起一片天&#xff0c;背后是默默的坚守与承担 说起生孩子这事儿啊&#xff0c;对大多数男同胞来讲&#xff0c;那真是又温馨又充满挑战。要当爸爸了&#xff0c;这意味着责任重大&#xff0c;心里期待满满&#xff0c;一方面得…

函数图像绘制小工具

函数图像绘制小工具 文章说明核心代码效果展示源码下载 文章说明 方便绘制一些数学的基础图象&#xff0c;制作该款小工具&#xff0c;不过尚为雏形阶段&#xff0c;等待后续逐步完善 核心代码 采用canvas绘图实现&#xff0c;核心代码如下 <script setup> import {onMou…

公开数据库汇总及下载(1)-TCGA

文章目录 1. 常用数据库2. TCGA数据下载2.1 TCGA介绍2.2 数据类型详解2.3 TCGA数据等级2.4 TCGA网页筛选页面介绍2.5 各文件每个字段的含义2.6 biospecimen IDs介绍(样本ID)2.7 下载代码 参考文件 本文的内容介绍、代码下载主要参考了网上多个文件汇总而成&#xff0c;本文仅作…

深度学习基础—Dropout正则化(随机失活正则化)

1.Dropout正则化 Dropout正则化&#xff1a;网络中每一个神经元节点都有一定概率保留或消除&#xff0c;从而下较小规模的网络。 假设上图网络存在过拟合&#xff0c;Dropout正则化的做法就是遍历每一个节点&#xff0c;对该节点以一定的概率保留或删除&#xff0c;从而简化网络…

C语言 | Leetcode C语言题解之第347题前K个高频元素

题目&#xff1a; 题解&#xff1a; struct hash_table {int key;int val;// 查看 https://troydhanson.github.io/uthash/ 了解更多UT_hash_handle hh; };typedef struct hash_table* hash_ptr;struct pair {int first;int second; };void swap(struct pair* a, struct pair*…

【C++】udp通信协议详解和示例

前言 UDP&#xff08;‌User Datagram Protocol&#xff0c;‌用户数据报协议&#xff09;‌是一种无连接的、‌不可靠的、‌面向数据报的传输层协议。‌它广泛应用于需要高实时性且对数据传输可靠性要求不高的场景&#xff0c;‌如实时音视频传输、‌在线游戏等。‌本文将详细…

Python做统计图之美

Python数据分析可视化 案例效果图 import pandas as pd import matplotlib.pyplot as plt import matplotlib# 数据 data {"房型": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],"住宅类型": ["普通宅", "普通宅", "普通宅", &q…

JUC6-共享模型之不可变

目录 日期转换的问题 问题提出 思路&#xff1a;同步锁 思路&#xff1a;不可变 不可变设计 final的使用 保护性拷贝 享元模式 概述 体现 包装类 String串池 BigDecimal BigInteger DIY 原理&#xff1a;final 无状态 日期转换的问题 问题提出 下面的代码在运…

python井字棋游戏设计与实现

python实现井字棋游戏 游戏规则&#xff0c;有三个井字棋盘&#xff0c;看谁连成的直线棋盘多谁就获胜 棋盘的展现形式为 棋盘号ABC和位置数字1-9 输入A1 代表在A棋盘1号位数下棋 效果图如下 部分源码如下&#xff1a; 卫星工纵浩 白龙码程序设计&#xff0c;点 代码获取 …

Stability AI发布了单目视频转4D模型的新AI模型:Stable Video 4D

开放生成式人工智能初创公司Stability AI在3月发布了Stable Video 3D&#xff0c;是一款可以根据图像中的物体生成出可旋转的3D模型视频工具。Stability AI在7月24日发布了新一代的Stable Video 4D&#xff0c;增添了赋予3D模移动作的功能。 Stable Video 4D能在约40秒内生成8…

DBAPI如何用SQL将多表关联查询出树状结构数据(嵌套JSON格式)

场景描述 假设数据库中有3张表如下&#xff1a; 客户信息表 订单表 订单详情表 一个客户有多个订单&#xff0c;一个订单包含多个产品信息&#xff0c;客户-订单-产品就构成了3级的树状结构&#xff0c;如何查询出如下树状结构数据呢&#xff1f; [{"customer_age"…

矩阵--旋转图像

给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 &#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&a…

嵌入式Day33---Linux软件编程---网络编程

目录 一、TCP包头 1.1.源端口 1.2.目的端口 1.3.序号 1.4.确认号 1.5.数据偏移 1.6.保留 1.7.指令信号 1.SYN 2.ACK 3.FIN 4.RST 5.PSH 6.URG 1.8.窗口 1.9.校验和 1.10.紧急指针 二、TCP的过程 2.1三次握手 2.2.传输数据 ​编辑 2.3.四次挥手 ​编辑 …

SpringBoot依赖之Spring Data Redis 一 List 类型

概念 Spring Data Redis (AccessDriver) 依赖名称: Spring Data Redis (AccessDriver)功能描述: Advanced and thread-safe Java Redis client for synchronous, asynchronous, and reactive usage. Supports Cluster, Sentinel, Pipelining, Auto-Reconnect, Codecs and muc…

[Qt][QSS][下]详细讲解

目录 1.样式属性0.前言1.盒模型(Box Model) 2.常用控件样式属性1.按钮2.复选框3.单选框4.输入框5.列表6.菜单栏7.注意 1.样式属性 0.前言 QSS中的样式属性⾮常多&#xff0c;不需要都记住&#xff0c;核⼼原则是⽤到了就去查 ⼤部分的属性和CSS是⾮常相似的 QSS中有些属性&am…