STM32学习笔记-TIM定时器-06

一.定时器简介

1.定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断

2.组成:16位计数器,预分频器,自动重装寄存器的时基单元,在72MHZ计数时钟下可以实现最带59.65s(72m/65536/65536然后取倒数)的定时

3.具备功能:定时中断,内外时钟源选择,输入捕获,输出比较,编码器接口,主从触发模式等

4.根据复杂度和应用场景分为了高级定时器,通用定时器,基本定时器

二.定时器类型

三.基本定时器框图解释

1.PCS预分频器:前面连接的时基准计数时钟的输入,来自RCC的TIMxCLK的主频位72MHZ,所以通向时基单元的计数基准频率就是72MHZ,预分频器可以对主频进行分频,输出频率=输入频率/(值+1)

2.计数器:不断自增,然后清零

3.自动重装寄存器:固定目标值,给计数器目标值

4.主模式触发DAC:能让内部的硬件在不受程序的控制下实现自动运行。更新事件通过主模式映射到TRGO,然后TRGO就回去触发DAC了,整个模式不需要软件参与。

四.通用定时器

1.中间核心部分为时基单元,同基本定时器

2.相比基本定时器,增加向下,中央对齐的计数模式,这两种不常用

3.外部时钟源选择:TIMx_ETR(常用,也就是外部时钟模式2),TRGI(主要用作触发输入),ITRx(实现定时器级联的功能),

4.定时器级联:比如先初始化tim3,再用主模式把它的更新事件映射到TRGO上,再初始化tim2,选择itr2,对应的就是tim3的trgo,后面再选择外部时钟模式1,用tim3的更新事件驱动tim2的时基单元,实现定时器的级联

5.右上角表示定时器的主模式输出

6.左下为输入捕获电路,右下为输出比较电路

五.高级定时器

相比于常规定时器,申请中断部分增加一个重复次数计数器,输出比较模块再升级了一下

六.定时中断和内外时钟源选择

七.预分频器时序图

八.计数器时序图

九.时钟树

十.程序思路
第一步:时钟初始化
第二步:选择时基单元的时钟
第三步:配置时基单元
第四步:使能更新中断


一.OC输出比较简介(out compare)

1.输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1,置0或者翻转的操作,用于输出一定频率和占空比的PWM波形

2.每个高级定时器和通用定时器拥有4个输出比较通道,各有各的寄存器,共用一个cnt计数器

3.高级定时器的前三个通道拥有死区生成和互补输出的功能,用于驱动三相无刷电机

二.输出比较通道(通用)

1.左边CCR1表示第一路捕获/比较寄存器,满足条件改变oc1ref的信号,然后信号前往TIMx_CCER来选择是否翻转和是否输出使能电路,最后达到oc1引脚

2.输出模式通过TIMx_CCMR1来输出,参考下表,有效电平即高电平

二.pwm输出

PWM频率:Freq=CK_PSC/(PSC+1)/(ARR+1)

PWM占空比:Duty=CCR/(ARR+1)

PWM分辨率:Rese=1/(ARR+1)


一.输入捕获简介IC

1.输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率,占空比,脉冲间隔,电平持续时间等参数。

2.每个高级定时器和通用定时器都有4个输入捕获通道

3.可配置为PWMI模式(pwm专门设计),同时测量频率和占空比

4.可配合主从触发模式,实现硬件全自动测量

二.输入捕获部分

1.TIMx—CH1输入信号,来到了输入滤波和边沿检测器,选择高(低)电平触发,边沿检测电路就会触发后续电路执行动作

2.第1套电路到TI1FP1到ic1,第2套电路到TI1FP2到ic2,或者各自独立连接。这样做可以灵活切换输入,或者可以把一个引脚的输入映射到两个单元,这样可以同时测量平吕和占空比。

三.主从触发模式

主模式:定时器内部信号映射到TRGO引脚,用来触发别的外设

触发源选择:选择从模式的触发信号源

从模式:接受其他模式或者自己信号

四.输入捕获基本结构

1.只使用一个通道,只能测量频率


一.编码器接口简介Encoder interface

1.编码器接口可接受增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置,旋转方向和旋转速度

2.每个高级定时器和通用定时器都拥有一个编码器接口

3.两个输入引脚借用了输入捕获的通道1和通道2

### STM32 CubeMX 定时器 TRGO 触发 DMA 配置教程 在使用 STM32定时器触发 ADC 并通过 DMA 进行数据传输的过程中,正确配置 TIM_TRGO 是非常重要的一步。以下是关于如何利用 STM32CubeMX 工具完成这一过程的具体说明。 #### 1. 创建工程并初始化外设 打开 STM32CubeMX 软件,创建一个新的工程,并选择目标 MCU 型号。随后,在 Pinout & Configuration 页面中启用所需的 GPIO 和外设模块(TIM、ADC 和 DMA)。确保这些外设被正确分配到对应的硬件引脚上[^1]。 #### 2. 配置定时器 (Timer) 进入 **Configuration -> Peripherals** 中找到 Timer 外设设置界面: - 设置模式为 `PWM Output` 或其他适合应用需求的工作方式; - 启用 Advanced Control 功能选项卡下的 Master Slave Mode; - 将 Update Request Source 设定成 Internal Clock; - 在 Trigger Selection 下拉菜单里挑选合适的信号源作为外部同步输入; - 关键步骤在于把 Output Compare and PWM mode option 改变为 `OCxREF clear enabled`, 然后指定 OCxM field value as '6' which corresponds to PWM mode 1 with preload enable plus setting up corresponding ARR register values according to desired frequency generation requirements[^3]. #### 3. 配置 ADC 模块 同样是在 **Peripherals** 标签页下定位至 Analog-to-Digital Converter 单元处做如下调整: - 开启 Continuous Conversion Mode 如果希望连续不断地获取采样数值的话; - 对于 Regular Channel Sequence Length 参数赋予恰当大小以便容纳所有计划测量的模拟量通道数目; - 利用 Injected Channels 来处理优先级更高的即时转换请求(如果必要); - 更改 Data Alignment 字段来决定最终读取出的数据是以左对齐还是右对齐形式呈现给使用者; 最后记得核查 Sampling Time 是否满足分辨率与时序方面的约束条件[^2]. #### 4. 配置 DMA 控制器 为了使能自动化的数据搬移操作,还需要针对 Direct Memory Access component 执行下列动作: - 添加至少一对独立专用型别的 Stream/Channel 给上述提及过的 A/D converter 使用; - 把 Direction 属性指派成 Peripheral To Memory 方向; - 循环模式 Circular Mode 应当开启以支持无缝衔接式的缓冲区填充作业流程; - 缓冲区内存地址 Increment Parameter 可依据实际状况灵活选取保持不变或者逐步递增的方式执行写入动作. 以上各项参数调节完毕之后即可生成对应平台上的驱动程序框架代码供后续深入定制化开发之需. ```c // 示例代码片段展示部分关键函数调用逻辑结构 HAL_TIM_Base_Start(&htimX); // 启动基础计数器工作 HAL_ADC_Start_DMA(&hadcY, pDataBuffer, BufferSize); // 初始化DMA并将首地址传递过去等待接收来自传感器端口送来的原始电信号强度信息流 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值