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

嵌入式-定时器的时基单元,自制延迟函数-Day21

一、时基单元

1.定时器简介

其实就是片上外设,然后分为3种,逐层阉割(高级的功能最全)

功能:其实单片机的手表,涉及到时间的都会用到这个片上外设

f1系列有14个定时器,这里的单片机选择了其中的4个


2. 时基单元的基本结构

时钟来源:来自时钟树下的时钟信号或者从模式控制器

降频PSC:降频 信号

计数CNT:记录脉冲信号次数

定时周期:使用到自动重装计时器ARR(封顶值,同时也代表步数/次数,比如0-59,60值,走59步),周期为ARR+1(原因0开始到4的5个数即四步,再走一步就因超限归0,所以得加1)

重复计数器RCR:只用于高级定时器,默认0,既而为1,设置值会控制几个周期触发一次update

解答定时器的定时功能

以手表举例,自带晶振发信号,分频,走59步,T=0,RCR为0,重复计数0+1,最后update


3.上计数、下计数和中心对齐

中心对齐特殊:因周期不同其他二者


4.时钟的来源

知识补充

分辨率:表盘一格(一次脉冲的t)

该时钟树下不管是哪个定时器,最后都是72MHz


5.寄存器预加载

带有背景灰色的都是带有影子寄存器(可以实现寄存器预加载)

往RCR写值:原理是先写入值到影子寄存器,然后当前面一个周期(或者k周期)完,触发update,影子寄存器写值到活动寄存器。

这里看,无影子寄存器,突然改变ARR(7-3),5始终不会等于3,走到当前2^16寄存器极限,才归0。造成无限递增

有影子寄存器,突然改变ARR,先影响影子寄存器值,当脉冲数走顶峰归0,触发update,影子往活动写值,因为从0开始,必定不会无限递增

二、自制延迟函数

单片机自带Delay是系统自带的:系统滴答计时器 SysTick,这里使用自制

1.获取单片机开机后的当前步数和当前走了多少时间

一开机就是0步,之后开始++

设置分辨率1us,周期为1ms,1ms触发一次update中断。

每次中断设置currentTick+1,即每ms下currentTick+1


2.实现延迟函数
3.初始化时基单元
4.配置中断
5.编写中断响应函数

http://www.dtcms.com/a/353807.html

相关文章:

  • Python常见设计模式1: 创建型模式
  • 【git】P1 git 分布式管理系统简介
  • linux安装docker compose
  • 企业如何构建全面的高防IP防护体系?
  • 【GPT入门】第60课 openCompose实践图文介绍指南
  • 【GM3568JHF】FPGA+ARM异构开发板 使用指南:USB接口
  • IBMS-建筑内分散的子系统(如 BA、安防、消防、能源、电梯等)进行数据互联、功能协同与智能管控
  • Linux--->网络编程(TCP并发服务器构建:[ 多进程、多线程、select ])
  • 动态规划:青蛙跳台阶
  • 红外对管模块传感器讲解
  • Spring Boot 多环境配置
  • HTML5入门学习
  • Linux下解压RAR文件到指定目录的完整指南
  • 学习设计模式《二十四》——访问者模式
  • 当传统金融遇上AI智能:一个开源AIStock系统的深度技术解析
  • net::ERR_CONTENT_LENGTH_MISMATCH 206 (Partial Content) nginx转发记录
  • 核心篇(下):Transformer 架构详解(程序员视角・实战版)
  • 从源码看浏览器弹窗消息机制:SetDefaultView 的创建、消息转发与本地/在线页通用实践
  • 2.渗透-.WEB运行原理-ZBlog安装(进一步理解数据库)
  • 深度学习——优化函数
  • Fast R-CNN论文研读整理记录
  • Lambda 表达式
  • 【菜狗学三维重建】TSDF三维重建隐式表达详细解释——20250413
  • pandas常用方法
  • 人工智能和机器学习如何改善机器人技术
  • 【VSCode】VSCode为Java C/S项目添加图形用户界面
  • YOLOv8-SMOT:一种高效鲁棒的实时小目标跟踪框架:基于切片辅助训练与自适应关联
  • 腾讯云 CVM 上的 SpringBoot 应用避免非法访问
  • Redis实战-优惠券秒杀解决方案总结大全
  • 开疆智能Profinet转EtherCAT网关连接TR-Electronic传感器配置案例