网站建设轮播图,全球邮企业邮箱,网页设计的背景代码大全,seo和网络推广哪个好目录
1. 定时器概述
1.1 软件定时原理
1.2 定时器定时原理
1.3 定时器分类
1.4 定时器特性表
1.5 基本、通用、高级定时器的功能整体区别
2. 基本定时器简介
3. 基本定时器框图
时钟树分析 这部分是笔者对基本定时器的理论知识进行学习与总结#xff01;主要记录学习…目录
1. 定时器概述
1.1 软件定时原理
1.2 定时器定时原理
1.3 定时器分类
1.4 定时器特性表
1.5 基本、通用、高级定时器的功能整体区别
2. 基本定时器简介
3. 基本定时器框图
时钟树分析 这部分是笔者对基本定时器的理论知识进行学习与总结主要记录学习过程中遇到的重难点其他一些基础点就一笔带过了
1. 定时器概述
1.1 软件定时原理
使用纯软件CPU死等的方式实现定时延时功能。 比如想要延时1s那么CPU就卡在延时函数里1s什么事情都不能干就会大大占用CPU资源。
软件定时不精准的原因 1.函数调用有一个压栈和出栈的过程压栈和出栈也需要消耗时间。 2.stm32是arm架构有三级流水线 流水线可以在一个时钟周期内同时处理多个指令的不同阶段降低了单个指令的执行时间。所以指令执行的时间是不确定的。 因为有压栈出栈的不确定以及流水线指令执行时间的不确定导致软件编写的函数是一个不精准的延时。
1.2 定时器定时原理
使用精准的时钟源通过硬件的方式实现定时功能定时器核心就是计数器。 时钟源(CLK)通过预分频器(PSC)分频得到TIM CLK(定时器工作的时钟频率)每来一个时钟计数器就计一个数当计数值到达自动重装载值时产生事件/中断达到计时的效果。
1.3 定时器分类 1.4 定时器特性表 F1系列 说明 计数器位数表示定时器可以计数的值16位可以计数2^16 65536个数计数范围0~65535 当计数时间到后会产生DMA请求 1.5 基本、通用、高级定时器的功能整体区别 从基本定时器到通用定时器到高级定时器层层迭代基本定时器具有的功能通用定时器都有通用定时器具有的功能高级定时器都有。
2. 基本定时器简介
基本定时器有两个TIM6和TIM7 主要特性 16位递增计数器计数值范围0~6553516位预分频器分频系数1~65536 定时器溢出时会产生触发信号用于触发DAC进行数模转换 在更新事件计数器溢出时会产生中断/DMA请求。 3. 基本定时器框图 流程框图分析首先时钟源经过控制器来到预分频器PSC里经过分频之后得到计数器的真正工作频率CK_CNT每来一个时钟则计数器自增1当计数值等于ARR(影子寄存器)的值时会产生溢出即产生事件/中断。
第①部分定时器时钟TIMxCLK,即内部时钟CK_INT;
第②部分控制器控制CNT计数器复位、使能、计数当CNT计数器溢出时触发控制器产生触发输出信号TRGO触发一次DAC数模转换。
第③部分 影子寄存器是实际起作用的寄存器不能直接访问而ARPE位决定了ARR是否具有缓冲当设置为有缓冲时ARR的预装载寄存器写入某个值这个值不会立即起作用必须等到更新事件发生时才会把ARR的预装载寄存器的值转移到影子寄存器从而真正起作用生效而设置无缓冲时给ARR的预装载寄存器写入某个值它会立即转移到影子寄存器中会立即生效。 预装载寄存器实际上起到一个缓冲的作用。 特别说明 两者区别计数器溢出时默认会产生事件也可以人为设置为不产生事件而中断和DMA请求是默认不产生可以人为的配置它产生。 总的来说当计数器溢出时事件会默认产生中断和DMA输出默认不产生。 产生更新事件后会让预装载寄存器的值加载到对应的影子寄存器当中。预装载寄存器是黑色的那个框框影子寄存器是灰色的那个矩形。 时钟树分析 模块框图 在《STM32F103系列数据手册》 中可以找到该模块框图由图知TIM6和TIM7挂载在APB1总线该总线的最高频率为36M。 由时钟树得知想要TIM2~TIM7的时钟频率为72MHz就要对AHB、APB1进行分频配置下面两张图分别是通过STM32CubeMX配置的时钟树以及正点原子官方给的sys.c文件中的时钟树配置配置效果都是一样对AHB进行1分频APB1进行2分频APB2进行1分频。当SYSCLK为最大72MHz时AHB进行1分频为72MAPB1进行2分频为36M因为此时APB1的预分频系数≠1所以输入到定时器2~7的TIMXCLK为36M*272M。 STM32CubeMX配置 正点原子提供的SYSTEM 本篇完。
本人博客仅代表个人见解方便记录成长笔记。
若有不足请指出感谢您的阅读