stm32 - 中断/定时器

stm32 - 中断/定时器

  • 概念
    • 时钟树
    • 定时器类型
    • 基准时钟(系统时钟)
    • 预分频器 - 时基单元
    • CNT计数器 - 时基单元
    • 自动重装寄存器 - 时基单元
    • 基本定时器结构
    • 通用定时器
      • 计数器模式
      • 内外时钟源选择
    • 定时中断基本结构
    • 时序
      • 预分频器时序
      • 计数器时序

概念

时钟树

https://www.bilibili.com/video/BV1th411z7sn?p=13&vd_source=7155082256127a432d5ed516a6423e20

执行main函数之前,程序中主函数还会执行一个systeminit函数,这个函数就是用来配置时钟树的

SYSCLK是系统时钟72MHZ
震荡源:内部震荡源RC振荡器8MHZ,外部震荡源:4~16MHZ(石英晶振),…
图中与门就是RCC_xxx函数打开时钟

在这里插入图片描述

定时器类型

  • 高级定时器:TIM1,TIM8 -> APB2总线,
  • 通用定时器:TIM2,TIM3,TIM4,TIM5 -> APB1总线,
  • 基本定时器:TIM6,TIM7 -> APB1总线,

针对STM32C8T6:TIM1,TIM2,TIM3,TIM4

基准时钟(系统时钟)

stm32主频72MHZ
RCC_TIMxCLK(主频)-> 内部时钟CK_INT(基本计数时钟) ->控制器 -> CK_PSC ->时基单元
因此,通向时基单元的计数基准频率是72MHZ

预分频器 - 时基单元

对输入的基准频率提前进行一个分频的操作

对72MHZ的计数时钟进行预分频
预分频器=0,不分频:输出频率=输入频率=72MHZ
预分频器=1,2分频:输出频率=输入频率/2=36MHZ
预分频器=11 ,12分频:输出频率=输入频率/12=6MHZ

预分频器是16位,最大可以写65535个数,最大是65535+1=65536分频;输出频率=输入频率/65536=1.0986328125KHZ

CNT计数器 - 时基单元

对预分频后的计数时钟进行计数,计数时钟每来一个上升沿,计数器值+1
CNT计数器是16位的,最多计0~65535的数值,再+1就从0开始计数

实际定时中断,应该是计数器达到目标值时,产生中断

自动重装寄存器 - 时基单元

存储计数目标的寄存器
自动重装寄存器是16位的, 是写入的固定值,当计数器的计数值达到自动重装寄存器的值的时候,表明定时时间到,产生中断信号,并清零计数器开始下一次从0开始计数

计数器值=自动重装寄存器的值(也叫更新中断),产生中断,产生中断后通往NVIC,再配置号NVIC定时器的通道, 执行中断服务

基本定时器结构

在这里插入图片描述

通用定时器

>

计数器模式

向上计数模式:基本定时器只有这一个功能
向下计数模式:通用计时器
中央对齐模式:通用计时器

  • 向下计数模式

从自定义的自动重装值开始,向下自减,减到0后重新回到自动重装值开始计数

  • 中央对齐模式

0-> 自增 -> 自动重装值 -> 自减 -> 0

内外时钟源选择

对于基本定时器,只能选择内部时钟进行定时,即系统频72MHZ
对于通用定时器,即能选择内部时钟72MHZ,也能选择外部时钟

在这里插入图片描述

外部时钟

TIMx_ETR引脚上的外部时钟(查看引脚定义图)
在引脚上接一个外部的方波时钟,然后配置内部的电路

定时中断基本结构

在这里插入图片描述

时序

预分频器时序

在这里插入图片描述

计数器时序


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

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

相关文章

Vue中如何进行多语言处理

Vue中的多语言处理 在开发多语言Web应用程序时,处理文本翻译和国际化是一个重要的任务。Vue.js提供了多种方法来实现多语言处理,以确保您的应用程序能够支持不同语言的用户。本文将深入探讨在Vue中进行多语言处理的方法,并提供示例代码来帮助…

WebSocket基础——WebSocket的基本概念 VS Http SpringBoot整合WebSocket vue前端代码和效果展示

前言 WebSocket是一种在Web浏览器和服务器之间进行全双工通信的协议。它允许在单个TCP连接上进行双向通信,而不需要通过多个HTTP请求-响应循环来实现。相比传统的HTTP请求,WebSocket提供了更低的延迟和更高的实时性。 本篇博客介绍WebSocket的基本概念…

Linux shell编程学习笔记6:查看和设置变量的常用命令

上节我们介绍了变量的变量命名规则、变量类型、使用变量时要注意的事项,今天我们学习一下查看和设置变量的一些常用命令,包括变量的提升,有些命令在之前的实例中已经使用过了。 一、 echo :查看变量的值 语法格式:ech…

计算机毕业设计 基于SSM的垃圾分类管理系统(以医疗垃圾为例)的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

《发现的乐趣》作者费曼(读书笔记)

目录 一、书简介 二、作者理查德•费曼 费曼式思维 教育与传承 三、个人思考 四、笔记 科学家眼中的花之美 关于偏科 父亲教育我的方式 知道一个概念和真正懂得这个概念有很大区别 我没有义务去成全别人对我的期望 诺贝尔奖——够格吗? 探究世界的游戏规…

2023年汉字小达人市级比赛在线模拟题来了,四种练习助力好成绩

2023年第十届汉字小达人比赛区级自由报名活动已于9月30日结束,尽管最终晋级市级比赛的名单还需要在11月初发布(有一些学校的校级选拔还没结束),但是许多小朋友已经开始准备市级比赛了。 根据往年的经验,实际比赛也是在…

接口测试入门实践

简单接口搭建(表单/REST) 五步教会你写接口 首先要安装flask包: pip install flask 从flask中导入Flask类和request对象: from flask import Flask, request从当前模块实例化出一个Flask实例:appFlask(__name__)编写一个函数来处理请求 从请求对象中获取数据:arequest.values.…

红黑树(有图解)

目录 介绍 概念 性质 模拟实现 结点定义 插入 保证平衡的原因 一般情况 特殊情况(uncle为黑) uncle不存在 旋转方式 右旋 迭代器 -- 代码 介绍 概念 红黑树是一种自平衡的二叉搜索树 它是在每个节点上引入额外的颜色信息,通过对任何一条从根到叶子的路径…

基于Dijkstra、A*和动态规划的移动机器人路径规划(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑…

优先级队列的模拟实现

目录 1. 优先级队列的概念 1.1堆的概念 1.2堆的性质 1.3堆的存储方式 2. 堆的创建 2.1堆的创建代码解析 2.2建堆的时间复杂度 2.3堆的插入 2.4 堆的删除 2.5常见习题 1. 优先级队列的概念 队列是一种先进先出 (FIFO) 的数据结构 ,但有些情况下, 操作的数…

Windows下载AOSP

关于repo repo只是谷歌做的,方便下载安卓源码的工具,本质上是对下载清单进行批量处理,然后使用git克隆。 在windows上下载源码只需要自己处理即可。 具体做法 首先使用git克隆安卓源码清单 git clone https://mirrors.tuna.tsinghua.edu.…

C# 画参数可调调幅波

参阅此, 使用VC输出调幅波的数值和波形_c如何显示下位机传输过来的频谱信号 csdn_bcbobo21cn的博客-CSDN博客 用winform做一下; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Dra…

【计算机网络】HTTP协议详解(举例解释,超级详细)

文章目录 一、HTTP协议简单介绍 1、1 什么是HTTP协议 1、2 再次理解“协议” 二、HTTP请求 2、1 HTTP的工作过程 2、1、1 demo代码 2、2 URL 介绍 2、2、1 urlencode 和 urldecode 2、3 HTTP 请求格式 三、HTTP响应 3、1 响应demo 3、2 HTTP 响应格式 四、HTTP 请求和响应中的…

【小尘送书-第六期】《巧用ChatGPT轻松玩转新媒体运营》AI赋能运营全流程,帮你弯道超车、轻松攀登运营之巅

大家好,我是小尘,欢迎你的关注!大家可以一起交流学习!欢迎大家在CSDN后台私信我!一起讨论学习,讨论如何找到满意的工作! 👨‍💻博主主页:小尘要自信 &#x1…

游戏逆向中的 NoClip 手段和安全应对方式

文章目录 墙壁边界寻找碰撞 NoClip 是一种典型的黑客行为,允许你穿过墙壁,所以 NoClip 又可以认为是避免碰撞体积的行为 墙壁边界 游戏中设置了碰撞体作为墙壁边界,是 玩家对象 和墙壁发生了碰撞,而不是 相机 玩家对象有他的 X…

8、Nacos服务注册服务端源码分析(七)

本文收录于专栏 Nacos 中 。 文章目录 前言确定前端路由CatalogController.listDetail()ServiceManager总结 前言 前文我们分析了Nacos中客户端注册时数据分发的设计链路,本文根据Nacos前端页面请求,看下前端页面中的服务列表的数据源于哪里。 确定前端…

【数据结构】红黑树(C++实现)

​ ​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:数据结构 🎯长路漫漫浩浩,万事皆有期待 上一篇博客:【数据…

类加载机制

类加载运行全过程 当我们用java命令运行某个类的main函数启动程序时,首先需要通过类加载器把主类加载到 JVM。 public class Math {public static final int initData 666;public static User user new User();public int compute() { //一个方法对应一块栈帧内…

Docker部署Nginx-常用命令

1.拉取 docker pull nginx 2. 查看镜像 docker images 3.保存镜像 docker save -o nginx.tar nginx:latest 4.删除镜像 docker rmi nginx:latest 5. 加载镜像 docker load -i nginx.tar 6. 运行Nginx docker run -d --name nginx -p 80:80 nginx 7.停掉Nginx容器 docker stop n…

Blender 导出 fbx 到虚幻引擎中丢失材质!!!(使用Blender导出内嵌材质的fbx即可解决)

目录 0 引言1 Blender导出内嵌纹理的fbx模型 0 引言 我在Blender处理了一些fbx模型后再次导出到UE中就经常出现,材质空白的情况(如下图所示),今天终于找到问题原因,记录下来,让大家避免踩坑。 其实原因很简…