当前位置: 首页 > news >正文

STM32 定时器复习

12MHz晶振的机器周期是1us,因为单片机的一个机器周期由6个状态周期组成,1个机器周期=6个状态周期=12个时钟周期,因此机器周期为1us。

51单片机常用

for(){__nop(); //执行一个机器周期,若想循环n us,则循环n次。
}

软件定时原理
使用纯软件(CPU死等)的方式实现定时功能。
函数调用压栈出栈也需要时间。
STM32是ARM架构,具有流水线,一个指令的执行会分成多个步骤,延时也不精准。

缺点:

  1. 延时不精准
  2. CPU死等

定时器定时原理

使用精准的时基,通过硬件的方式,实现定时。
定时器核心就是计数器。

在这里插入图片描述

STM32定时器分类

  1. 常规定时器:基本定时器、通用定时器、高级定时器
  2. 专用定时器:独立看门狗、窗口看门狗、实时时钟、低功耗定时器
  3. 内核定时器:SysTick定时器
    在这里插入图片描述

区别:

  1. 基本定时器:没有输入输出通道,常用作时基,即定时功能。
  2. 通用定时器:具有多路独立通道,可用于输入捕获、输出比较,甚至可用作时基。
  3. 高级定时器:除了具备通用定时器所有功能外,还具备带死区控制的信号输出。

基本定时器

基本定时器:TIM6/TIM7
16位递增计数器(计数值:0~65535)
16位预分频器(分频系数:1~65536)
可用于触发DAC
在计数器溢出时,可产生中断/DMA请求

在这里插入图片描述

  1. 时钟源
  2. 控制器
  3. 计数器

溢出条件 CNT=ARR(影子)
影子寄存器是实际起作用的寄存器,不可直接访问。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
因此,定时器2-7最大频率72MHz。

计数器模式及溢出条件:

  1. 递增计数器:CNT==ARR(影子)
  2. 递减计数器:CNT==0
  3. 中心对齐模式:CNTARR-1、CNT1

在这里插入图片描述
在这里插入图片描述
具有缓冲能减少操作寄存器时间的误差。

在这里插入图片描述

http://www.lryc.cn/news/131428.html

相关文章:

  • 17-工程化开发 脚手架 Vue CLI
  • golang 分布式微服务DAO层构建
  • Java 项目日志实例:LogBack
  • 什么是条件get方法?
  • Python爬虫——scrapy_crawlspider读书网
  • Spring源码编译-for mac
  • 视频汇聚平台EasyCVR安防监控视频汇聚平台的FLV视频流在VLC中无法播放的问题解决方案
  • 中间件:RocketMQ安装部署
  • leetcode-动态规划-42-接雨水
  • [静态时序分析简明教程(十一)]浅议tcl语言
  • 大数据-玩转数据-Flink 网站UV统计
  • 3分钟了解下cwnd和TCP拥塞控制算法
  • 设计模式之状态模式(State)的C++实现
  • 无涯教程-TensorFlow - Keras
  • 使用SSH隧道将Ubuntu云服务器Jupyter Notebook端口映射到本地
  • Keepalived+LVS部署高可用集群
  • 2023河南萌新联赛第(五)场:郑州轻工业大学
  • 在Orangepi5开发板3588s使用opencv获取摄像头画面
  • 音视频 ffmpeg命令分类查询
  • VSCode无法从Extensions下载工具时,把工具下载到本地并添加到VSCode编辑器
  • WebStrom 前端项目Debug
  • 【ARM Linux 系统稳定性分析入门及渐进12 -- GDB内存查看命令 “x“(examine)】
  • kube-prometheus 系列1 项目介绍
  • 深度学习在组织病理学图像分析中的应用: Python实现和代码解析
  • kotlin的列表
  • PCL 三维点云边界提取(C++详细过程版)
  • ../../ 目录遍历
  • clickhouse集群部署
  • centos8 使用phpstudy安装tomcat部署web项目
  • 爬虫百度返回“百度安全验证”终极解决方案