STM32学习笔记-外部中断和外部时钟

news2024/12/25 14:32:34

文章目录

    • EXTI基本结构
        • AFIO
    • 定时器
      • 1. STM32 定时器的种类
      • 2. 定时器的主要功能
      • 3. 定时器的配置
      • 4. 定时器 PWM 输出模式
      • 5. 定时器中断配置
      • 输出比较
      • 1. 输出比较模式概述
      • 2. 输出比较模式的配置
        • 今天实在有点疲惫了,明天继续学吧。

EXTI基本结构

在这里插入图片描述

AFIO

中断引脚选择,所有GPIO都可以中断,但是相同的引脚Pin不可以, 注意9-5,10-15是相同的中断,所以要用标志位进行区分。
AFIO功能:外设复用功能:在STM32中,一个I/O引脚可以有多种功能,如GPIO、UART、SPI、I2C等。AFIO模块通过寄存器配置,使得某个引脚对应的特定外设功能可以被激活。
重映射功能:STM32的部分引脚默认功能可能会与其他外设冲突,AFIO提供了一种方法来将这些功能“重映射”到不同的引脚,以避免冲突。
事件控制器:AFIO还支持事件控制功能,可以将某些事件连接到I/O端口,用于唤醒低功耗模式等。
在这里插入图片描述
触发选择器用来选择检测方式,中断屏蔽寄存器确定开启哪些中断。/20是20根线的意思.

定时器

1. STM32 定时器的种类

STM32 的定时器根据功能分为以下几类:

  • 基本定时器(如 TIM6 和 TIM7):只有简单的计数功能,常用于周期性中断,不支持输入捕获和输出比较。
    在这里插入图片描述
    预分频器写定时器的计数频率可以通过预分频器进行进一步分频,计算公式为:
    F t i m = F c l k ( P S C + 1 ) F_{tim} = \frac{F_{clk}}{(PSC + 1)} Ftim=(PSC+1)Fclk
    其中, F c l k F_{clk} Fclk 是输入时钟频率, P S C PSC PSC 是预分频系数。
    计数器会不断自增。计数器和自动重装载相等,把计数器清零,重新计数。
    定时器主模式,通过主模式映射,实现硬件的自动化。

  • 通用定时器(如 TIM2、TIM3、TIM4 、TIM5等):支持输入捕获、输出比较、PWM 生成和计数器模式,应用灵活,功能较多。
    在这里插入图片描述
    向下计数模式,中央对齐(先向上中断,然后下去中断)。
    外部ETR经过滤波可以输入外部时钟

  • 高级定时器(如 TIM1 和 TIM8):功能强大,具备高级的 PWM 输出控制、死区时间控制、刹车控制等功能,适合用于电机控制等复杂应用场景。
    在这里插入图片描述
    多了计数器可以多次计数后再中断。
    DTG,死区,强力关断二极管。三相无刷电机。刹车输入电路,防止意外产生。

2. 定时器的主要功能

STM32 定时器具备以下核心功能:
在这里插入图片描述

  • 计时功能:通过计数来精确测量时间,可以实现时间延迟。
  • 输入捕获(Input Capture):捕获输入信号的脉冲宽度或周期。
  • 输出比较(Output Compare):在计数器达到某一预定值时产生输出事件。
  • PWM 输出:用于生成脉宽调制信号,常用于控制 LED 亮度或电机的速度。
  • 编码器接口模式:可以用于电机控制中的位置和速度测量。
    预分频缓冲器可以防止运行时频率变化对定时的影响。

3. 定时器的配置

STM32 定时器通过以下几个步骤进行配置:

  1. 时钟配置:定时器的计数频率由系统时钟分频得到。可以使用 RCC(Reset and Clock Control)模块来配置定时器时钟源。
    时钟树:
    在这里插入图片描述
    如果外部72MHz时钟出问题了,会使用内部8MHz的。CSS,检测外部时钟是否有问题。

  2. 预分频器(Prescaler)

  3. 计数器模式:定时器可以配置为向上计数、向下计数或中心对称模式(即先向上计数再向下计数,适用于 PWM)。

  4. 自动重装载值(ARR):计数器计数到这个值后会自动重置,并可触发中断或事件。通过调整 ARR 可以实现不同的定时周期。

  5. 中断和事件:配置定时器的中断,可以在计数到达特定值(如 ARR)时产生中断,从而执行特定任务。

4. 定时器 PWM 输出模式

PWM(脉宽调制)模式是 STM32 定时器的重要功能之一,通过 PWM 信号可以控制 LED 亮度、伺服电机角度、直流电机速度等。PWM 信号的占空比由定时器的计数值与比较寄存器的值来决定。

配置 PWM 输出模式的步骤如下:

  1. 选择 PWM 模式:将定时器的通道配置为 PWM 模式(如 PWM 模式 1 或 PWM 模式 2)。
  2. 设置占空比:设置比较寄存器 CCR 值来控制占空比,比较值占周期的比例决定 PWM 信号的高电平时间。
  3. 输出极性设置:可选择 PWM 信号的输出极性。
  4. 启动定时器:启用定时器,并在相关通道上产生 PWM 信号。

5. 定时器中断配置

STM32 定时器支持多种中断,例如更新中断、捕获中断、比较中断等。在使用中断时,需启用定时器和 NVIC(中断向量控制器)的中断通道。

配置步骤如下:

  1. 使能中断:在定时器的控制寄存器中设置中断使能位(如 TIM_IT_Update)。

  2. 配置中断优先级:在 NVIC 设置中断优先级。

  3. 编写中断服务函数:在中断处理函数中,编写定时器到期后的任务。

  4. 清除中断标志:在中断服务函数中执行完成后,清除中断标志位以避免重复触发。

输出比较

在这里插入图片描述

在 STM32 中,TIM(定时器)的输出比较模式(Output Compare)是定时器模块的一个重要功能,用于生成特定的事件或输出信号。在输出比较模式下,定时器会将计数器的值与指定的比较值进行比较,当计数器达到比较值时,定时器会触发相应的事件或输出信号。

1. 输出比较模式概述

输出比较模式的核心是将定时器的计数器(CNT)的值与预设的比较寄存器(CCR)中的值进行比较。每当计数器的值与比较值相等时,TIM 就会执行相应的动作,比如触发中断、产生输出信号等。

STM32 的定时器提供多种输出比较模式,常用的包括以下几种:

  • 冻结模式(Frozen Mode):计数器达到比较值时不会产生任何输出变化。
  • 活动电平模式(Active Level Mode):计数器达到比较值时将输出设为高电平。
  • 非活动电平模式(Inactive Level Mode):计数器达到比较值时将输出设为低电平。
  • 翻转模式(Toggle Mode):计数器达到比较值时翻转输出电平。
  • 强制输出模式(Force Active / Force Inactive):强制将输出设为高电平或低电平。
  • PWM 模式(PWM Mode 1 / PWM Mode 2):PWM Mode 1:在这种模式下,当计数器的值小于比较寄存器 CCR 的值时,输出为高电平;当计数器的值大于或等于 CCR 的值时,输出为低电平。因此,占空比与 CCR 的值成正比,CCR 越大,高电平持续的时间越长。
  • PWM Mode 2:在这种模式下,当计数器的值小于比较寄存器 CCR 的值时,输出为低电平;当计数器的值大于或等于 CCR 的值时,输出为高电平。

2. 输出比较模式的配置

在 STM32 中,输出比较模式可以通过以下步骤进行配置:

  1. 设置定时器时钟:启用定时器的时钟,设置预分频器(PSC)和自动重装载寄存器(ARR)以确定计数频率和周期。

  2. 选择输出比较模式:通过配置 TIMx_CCMRx 寄存器(捕获/比较模式寄存器),选择合适的输出比较模式,例如冻结模式、翻转模式等。

  3. 设置比较值:将比较值写入比较寄存器 TIMx_CCRy 中(其中 x 表示定时器编号,y 表示通道号),定时器会将 CNT 的值与 CCR 的值进行比较。

  4. 使能通道输出:通过 TIMx_CCER(捕获/比较使能寄存器)设置通道使能和极性,以允许信号输出。

  5. 启动定时器:设置 TIMx_CR1(控制寄存器 1)的使能位(CEN),开始定时器计数。

今天实在有点疲惫了,明天继续学吧。

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

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

相关文章

【测试小白--如何写好测试用例--测试用例编写的方法+结合常见登录模块为实例--保姆级教学】

测试用例编写方法&登录模块实例 一、测试用例编写方法1. 等价类划分2. 边界值分析3. 状态转换测试4. 决策表测试5. 错误推测6. 用户场景测试7. 安全测试用例 二、登录模块测试用例实例1. 等价类划分2. 边界值分析3. 状态转换测试4. 决策表测试5. 错误推测6. 用户场景测试7.…

Python数据可视化seaborn

产品经理在做数据分析时可能需要通过可视化来分析。seaborn官网 1. relplot 散点图 https://seaborn.pydata.org/examples/scatterplot_sizes.html import pandas as pd import seaborn as sns df pd.DataFrame({x: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],y: [8, 6, 7, 8, 4, 6,…

Ubuntu Linux

背景 Ubuntu起源于南非,其名称“Ubuntu”来源于非洲南部祖鲁语或豪萨语,意为“人性”、“我的存在是因为大家的存在”,这体现了非洲传统的一种价值观。Ubuntu由南非计算机科学家马克沙特尔沃斯(Mark Shuttleworth)创办…

yolov8涨点系列之轻量化主干网络替换

文章目录 YOLOv8 替换成efficientvit轻量级主干网络的好处计算效率提升模型部署更便捷方便模型移植 模型可扩展性增强便于集成其他模块支持模型压缩技术 主干网络替换1.创建yolov8_efficeintVit.py2.修改task.py(1)引入创建的efficientViT文件(2)修改_predict_once函数(3)修改p…

碧桂园服务启动“乘梯无忧”专项行动 携手业主共筑电梯安全新未来

摘要:全国400城8000项目全面覆盖 电梯是当代社会不可或缺的垂直交通工具,电梯安全问题不仅关系到居民的日常生活,更关乎到他们的生命财产安全。随着生活节奏的加快,居民对电梯的运行效率也有了更高的要求和期待。 碧桂园服务在2…

应对AI与机器学习的安全与授权管理新挑战,CodeMeter不断创新引领保护方案

人工智能(AI)和机器学习(ML)技术正在快速发展,逐渐应用到全球各类主流系统、设备及关键应用场景中,尤其是在政府、商业和工业组织不断加深互联的情况下,AI和ML技术的影响日益广泛。虽然AI技术的…

【AI换装整合包及教程】OOTDiffusion: AI换装工具的革命性创新

引言 在当今这个数字化时代,人工智能(AI)技术的发展日新月异,从最初的语音识别、图像识别到现在的自然语言处理,AI的应用范围不断扩大,深刻地改变了我们的生活方式和工作模式。特别是在时尚界,…

全面解析:网络协议及其应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 # 全面解析:网络协议及其应用 文章目录 网络协议概述定义发展历程主要优势 主要网络协议应用层协议传输层协议网络层…

零基础‘自外网到内网’渗透过程详细记录(cc123靶场)——下

细节较多,篇幅较大,分为上/下两部分发布在两篇文章内 另一部分详见下面文章 零基础‘自外网到内网’渗透过程详细记录(cc123靶场)——上https://blog.csdn.net/weixin_62808713/article/details/143572185 八、第二层数据库服务器权限获取 猜到新闻资…

参数跟丢了之JS生成器和包装器

如需转载请注明出处.欢迎小伙伴一起讨论技术. 逆向网址:aHR0cHM6Ly91bmlvbi5qZC5jb20vcHJvTWFuYWdlci9pbmRleD9wYWdlTm89MQ 跟踪接口:aHR0cHM6Ly9hcGkubS5qZC5jb20vYXBp 跟踪参数:h5st 本文目标:记录学习下自定义的生成器和包装器,不做具体的参数加密逻辑分析 直接启动器进…

【浪潮商城-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…

openGauss数据库-头歌实验1-5 修改数据库

一、查看表结构与修改表名 (一)任务描述 本关任务:修改表名,并能顺利查询到修改后表的结构。 (二)相关知识 为了完成本关任务,你需要掌握: 1.如何查看表的结构; 2.如…

linux 磁盘配额 quota

增加一个facl的的知识点: linux中默认的文件系统支持facl,如果是新挂载的分区,则不支持facl应用。需要在挂载文件系统时使用-o acl选项来启用facl支持。如下图显示 在/etc/fstab添加defaults,acl 1.启用磁盘配额功能:修改/etc/f…

进程和线程概念

进程 进程是系统进程资源分配和调度的一个独立单位。 进程的状态与转换 就绪 -> 阻塞 -> 执行 另外还有一个挂起操作,可将进程转入静止状态,知道激活操作,程序将恢复原有状态。 线程 线程更加轻量,作为调度和分派的基本…

三周精通FastAPI:27 使用使用SQLModel操作SQL (关系型) 数据库

官网文档:https://fastapi.tiangolo.com/zh/tutorial/sql-databases/ SQL (关系型) 数据库 FastAPI不需要你使用SQL(关系型)数据库。 但是您可以使用任何您想要的关系型数据库。 这里我们将看到一个使用SQLModel的示例。 SQLModel是在SQLAlchemy和Pydantic的基础…

Java 并发编程学习笔记

参考资料: JAVA并发专题 - 终有救赎的专栏 - 掘金 Java并发编程学习路线(建议收藏��) | Java程序员进阶之路x沉默王二 面试题目: JUC第一讲:Java并发知识体系详解 面试题汇总(P6熟练 P7精通…

Docker篇(基础命令)

目录 一、启动与停止 二、镜像相关的命令 1. 查看镜像 2. 搜索镜像 3. 拉取镜像 4. 删除镜像 三、容器创建与启动容器 1. 查看容器 2. 创建容器 交互式方式创建容器 守护式方式创建容器 3. 容器启动与停止 四、容器操作命令 1. 文件拷贝 2. 目录(文件…

qt QColorDialog详解

1、概述 QColorDialog是Qt框架中的一个对话框类,专门用于让用户选择颜色。它提供了一个标准的颜色选择界面,其中包括基本的颜色选择器(如调色板和颜色轮)、自定义颜色输入区域以及预定义颜色列表。QColorDialog支持RGB、HSV和十六…

算法练习:904. 水果成篮

题目链接:904. 水果成篮。 题目意思就是可以选取两个种类的水果不能超过两个种类,该种类个数没有限制, 但是一旦超过两个种类的水果就要停止计数。 示例中数组编号就是就是种类,就是不能出现三个不同编号的数。 1.暴力解法&…

JAVA WEB — HTML CSS 入门学习

本文为JAVAWEB 关于HTML 的基础学习 一 概述 HTML 超文本标记语言 超文本 超越文本的限制 比普通文本更强大 除了文字信息 还可以存储图片 音频 视频等标记语言 由标签构成的语言HTML标签都是预定义的 HTML直接在浏览器中运行 在浏览器解析 CSS 是一种用来表现HTML或XML等文…