广东网站建设企业,wordpress阿里巴巴图标,免费做印章的网站,网站页面设计最宽可做多宽#x1f680;write in front#x1f680; #x1f50e;大家好#xff0c;我是黄桃罐头#xff0c;希望你看完之后#xff0c;能对你有所帮助#xff0c;不足请指正#xff01;共同学习交流 #x1f381;欢迎各位→点赞#x1f44d; 收藏⭐️ 留言#x1f4dd;… write in front 大家好我是黄桃罐头希望你看完之后能对你有所帮助不足请指正共同学习交流 欢迎各位→点赞 收藏⭐️ 留言 本系列哔哩哔哩江科大STM32的视频为主以及自己的总结梳理 Projeet source code 工程代码放在了本人的Gitee仓库iPickCan (iPickCan) - Gitee.com 引用
STM32入门教程-2023版 细致讲解 中文字幕_哔哩哔哩_bilibili
Keil5 MDK版 下载与安装教程STM32单片机编程软件_mdk528-CSDN博客
STM32之Keil5 MDK的安装与下载_keil5下载程序到单片机stm32-CSDN博客
0. 江协科技/江科大-STM32入门教程-各章节详细笔记-查阅传送门-STM32标准库开发_江协科技stm32笔记-CSDN博客
江科大STM32学习笔记上_stm32博客-CSDN博客
STM32学习笔记一基于标准库学习_电平输出推免-CSDN博客
术语
英文缩写描述GPIOGeneral Purpose Input Onuput通用输入输出AFIOAlternate Function Input Output复用输入输出AOAnalog Output模拟输出DODigital Output数字输出
正文
0. 概述
从 2024/06/12 定下计划开始学习下江协科技STM32课程接下来将会按照哔站上江协科技STM32的教学视频来学习入门STM32 开发本文是视频教程 P2 STM32简介一讲的笔记。 定时器共四个部分分为八个小节笔记。本小节为第一部分第一节。
在第一部分是定时器的基本定时的功能定时中断功能、内外时钟源选择
在第二部分是定时器的输出比较功能最常见的用途是产生PWM波形用于驱动电机等设备
在第三部分是定时器的输入捕获功能和主从触发模式来实现测量方波频率
在第四部分是定时器的编码器接口能够更加方便读取正交编码器的输出波形编码电机测速 1.STM32 TIM定时器简介
TIMTimer定时器定时触发中断
⏱️定时器本质上就是一个计数器
定时器可以对输入的时钟进行计数在stm32中定时器的基准时钟一般是主频72MHz如果对72MHz记72个数那就是1MHz也就是1us的时间72MHz就是1秒记72M个数可以理解为对72个数计数1M次记72个数的频率就是1MHz用时1us如果记72000个数那就是1KHz也就是1ms的时间并在计数值达到设定值时触发中断。
stm32的定时器拥有16位2的16次方是65536的计数器计数器就是用来执行计数定时的寄存器每来一个时钟计数器加1、预分频器可以对计数器的时钟进行分频让计数更加灵活、自动重装寄存器是计数的目标值计多少个时钟申请中断的时基单元在72MHz计数时钟下可以实现最大59.65s的定时。
预分频值PSC、自动重装载值ARR。 定时器的计数频率 时钟频率 / PSC 1 最大定时时间 ARR 1/ 定时器的计数频率 即最大定时时间 (ARR 1) * (PSC 1) / 时钟频率 ️不仅具备基本的定时中断功能而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能
️根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型
定时器类型
类型 编号 总线 功能 高级定时器 TIM1、TIM8 APB2 拥有通用定时器全部功能并额外具有重复计数器、死区生成、 互补输出、刹车输入等功能 通用定时器 TIM2、TIM3、TIM4、TIM5 APB1 拥有基本定时器全部功能并额外具有内外时钟源选择、输入捕获、 输出比较、编码器接口、主从触发模式等功能 基本定时器 TIM6、TIM7 APB1 拥有定时中断、主模式触发DAC的功能
除了TIM1-8在库函数中还出现了TIM9、10、11等这些一般都用不到
高级定时器额外具有的重复计数器、死区生成、互补输出、刹车输入等这些功能主要是为了三相无刷电机的驱动设计的
STM32F103C8T6定时器资源TIM1、TIM2、TIM3、TIM4不同的型号定时器的数量是不同的
基本定时器
理解时基单元的工作流程定时器产生中断的全部流程、主模式触发DAC的功能如下内容
1.基本定时器时基单元 下面这三个构成了最基本的计数计时电路所以这一块电路就叫做时基单元
时基单元预分配器PSC、自动重装载寄存器ARR、计数器CNT 2.时基单元的工作流程
内部时钟的来源是RCC_TIMxCLK频率值是系统的主频72MHz所以通向时基单元的计数基准频率就是72MHz
进入时基单元首先是预分频器PSC它可以对72MHz的计数时钟进行预分频比如预分频器写0就是不分频输出72MHz写1是进行二分频输出36MHz写2是三分频输出24MHz ..所以预分频的值和实际的分频系数相差1即实际分频系数预分频器的值1预分频器是16位的最大值可以写65535也就是最大65536分频。
然后是计数器对预分频后的计数时钟进行计数计数时钟每来一个上升沿计数器的值加1这个计数器的值也是16位的值可以从0一直加到65535如果再加的话计数器就会回到0重新开始。所以计数器的值在计时过程中会不断地自增运行当自增运行到目标值时产生中断那就完成了定时的任务所以还需一个存储目标值的寄存器那就是自动重装载寄存器了
自动重装寄存器也是16位的它存的是我们写入的计数目标在运行的过程中计数值不断自增自动重装载是固定的目标当计数值等于自动重装值时也就是计时时间到了那它就会产生一个中断信号并且清零计数器计数器自动开始下一次的计数计时。像这种计数值等于自动重装值产生的中断叫做“更新中断”这个更新中断之后就会通向NVIC我们再配置好NVIC的定时器通道那定时器的更新中断就能够得到CPU的响应。
总结定时器产生中断的全部流程从基准时钟到预分频器再到计数器计数器计数自增同时不断地与自动重装寄存器进行比较值相等时即计时时间到这时就会产生一个更新中断和更新事件CPU响应更新中断就完成了我们定时中断的任务了。 图红圈是一个向上的折线箭头就代表这里会产生中断信号像这种计数值等于自动重装值产生的中断叫做“更新中断”。 下图红圈是一个向下的折线箭头代表的是产生一个事件这里对应的事件就叫做“更新事件”更新事件不会触发中断但可以触发内部其它电路的工作。 以上就是定时中断和时基单元的工作流程。 3.主模式触发DAC的功能
下面简单介绍一下后续讲主模式触发DAC的功能stm32定时器的一大特色就是主从触发模式主从触发模式能让内部的硬件在不受程序的控制下实现自动运行如果能把主从触发模式掌握好那在某些情景下将会极大地减轻CPU的负担。
主模式触发DAC的作用就是在我们使用DAC的时候可能会用DAC输出一段波形那就需要每隔一段时间来触发一次DAC让它输出下一个电压点。如果用正常的思路来实现的话就是先设置一个定时器产生中断每隔一段时间在中断程序中调用代码手动触发一次DAC转换然后DAC输出这样会使主程序处于频繁被中断的状态这会影响主程序的运行和其他中断的响应所以定时器就设计了一个主模式使用这个主模式可以把定时器的更新事件映射到触发输出TRGOTrigger Out的位置然后TRGO直接接到DAC的触发转换引脚上这样定时器的更新就不需要再通过中断来触发DAC转换了仅需要把更新事件通过主模式映射到TRGO然后TRGO就会直接区触发DAC整个过程不需要软件的参与实现了硬件自动化这就是主模式的作用当然除了主模式外还有更多硬件自动化的设计后续讲 以上就是基本定时器的内容
通用定时器
1.通用定时器与基本定时器异同
首先中间最核心的部分还是时基单元如下这部分结构和工作流程和基本定时器是一样的不过对于通用定时器而言计数器的计数模式就不止向上计数一种了向上自增通用定时器和高级定时器支持向上计数模式、向下计数模式和中央对齐模式。基本定时器仅支持向上计数模式。最常用的还是向上计数模式。 向下计数模式就是从重装值开始向下自减减到0之后回到重装值同时申请中断然后继续下一轮依次循环中央对齐模式就是从0开始先向上自增计到重装值申请中断然后再向下自减减到0再申请中断然后继续下一轮依次循环 2.内外时钟源选择功能
如下是内外时钟源选择和主从触发模式的结构。 内外时钟源选择对于基本定时器定时只能选择内部时钟也就是系统频率72MHz对于通用定时器时钟源可以选择内部时钟或者外部时钟
外部时钟的选择有如下四种
2.1 第一个外部时钟就是来自TIMx_ETR引脚上的外部时钟
可以在TIM2的ETR引脚也就是PA0上接一个外部方波时钟然后配置一下内部的极性选择、边沿检测和预分频器电路再配置一下输入滤波电路这两块电路可以对外部时钟进行一定的整形因为是外部时钟所以难免会有毛刺这些电路就可以对输入的波形进行滤波同时也可以选择一下极性和预分频器最后滤波后的信号兵分两路上面一路ETRF进入触发控制器紧跟着就可以选择作为时基单元的时钟了在stm32中这一路也叫做‘外部时钟模式2’如图中红线另一路与其他信号通过一个数据选择器输出TRGITrigger In触发输入当这个TRGI当作外部时钟来使用时这一路就称为 外部时钟模式1如图中黄线所示。后者从名字上看它主要是作为触发输入来使用的这个触发输入可以触发定时器的从模式。关于从模式的内容之后再涉及本节主要考量把这个触发输入当作外部时钟来考虑的情况。 TIMx_ETR引脚的位置可以参考引脚定义表中关于默认复用功能和重定义功能的定义如下图所示。可以看到TIM2的CH1和ETR都复用在了引脚PA0上。其他定时器的引脚也可以在表中找到。 2.2 第二个外部时钟可以是来自其他定时器的信号ITR