STM32:定时器从模式

今天介绍一下从模式Slave Mode中除了外部时钟模式1的另外3个模式:

分别是Reset Mode:复位模式;Gate Mode:门模式;Trigger Mode:触发模式

外部时钟模式1是给定时器提供计数的信号 ,这三种模式功能是控制定时器的工作状态。

一.复位模式

1.复位模式:

从模式中选择复位模式 对定时器计数状态进行复位,此时外部时钟模式1不能为定时器提供计数信号(被从模式占用) ,我们可以使用另外时钟源:内部时钟 (计时)或ETR(通过外部时钟模式2接入定时器对外部信号进行计数)。

假设这里使用内部时钟源,预分频器设置为0,自动重装载寄存器设置为5。

2.CubeMX:

(1)打开Serial Wire

(2)打开串口:发送数据

(3)TIM2

打开定时器中断,以触发定时器更新中断

过滤器设置15,以过滤掉抖动

保存并生成代码

3.代码:

实现引入上升沿时计数器重新计数,当超过自动重装载值时,串口发送"自动重装载值"且计数器重新开始计数。

(1)头文件

(2)定时器更新中断函数

(3)main函数

复位模式与自动重装载都可以触发定时器更新中断,那我们该如何区分这两者产生的定时器更新中断呢?

定时器更新中断有一个标志位 ,从模式控制器在接收到触发信号后,会设置一个触发器中断标志位 ,所以只要看一下触发器中断标志位是否被置为1,也就可以区分二者了。

其中**__HAL_TIM_GET_FLAG**可以获取定时器标志位的值.

触发器中断标志位:TIM_FLAG_TRIGGER

HAL库未帮我们清0触发器中断标志位,因此再判断触发器中断标志位被置为1后,因此要用**__HAL_TIM_CLEAR_FLAG函数重新清0。**

编译并下载:每5s触发自动重装载中断:输出一次"自动重装载值",并重新计数;通过光电开关引入一个上升沿,输出"从模式触发"并重新计数。

二.门模式

1.门模式:

门模式像控制了时钟信号的一个门,当输入的信号为高电平 时,门打开,时钟信号可以进入定时器,定时器正常计数 。输入信号为低电平 时,门关闭,定时器暂停计数 。若将边沿检测器设置为下降沿,则高低电平对门的开关控制便反过来

2.CubeMX:

3.代码:

门模式下,控制信号出现下降沿或上升沿,从模式控制器就会暂停或继续定时器计数,这两个边沿时刻,也会将触发器中断标志位置1 ,但门模式并不复位计数器的值,也就不再触发定时器更新中断。所以在更新中断中判断触发器的标志位没有意义。

将判断触发器判断标志位的代码放入while函数中,中断程序就会在检测到触发器中断标志位被置1后,清0此标志位并发送"从模式触发"。

编译并下载:当光电开关输出高电平时,正常计数。当光电开关输出低电平时,发送"从模式触发",计数暂停并一直输出同一个数字。

三.触发模式

1.触发模式:

检测到设定的边沿后,让定时器开始计数

2.CubeMX:

3.代码:

代码不需要改动,编译并下载:开始时不计数,输出为0。当我们让光电开关输出一个上升沿时,发送"从模式触发",启动计数。当继续给一个上升沿时,只会发送"从模式触发",计数并不会停止。

触发模式配合单脉冲 :触发模式只能启动定时器计数,不能停止定时器计数,因此我们可以将触发模式会配合单脉冲模式一起使用。(单脉冲模式:定时器不再循环计数。即当计数到自动重装载后,便停止计数。只有当再次引入上升沿时,定时器又重新开始计数。

CubeMX启动单脉冲模式:

保存并生成代码,编译并下载:给一个上升沿时,发送"从模式触发",计数开始。当计数达到自动重装载后,发送"自动重装载值"并停止计数。我们可以继续给一个上升沿,发送"从模式触发"然后计数又开始。
注意:我们发现每次程序启动或按复位按钮都会发送"自动重装载"

这是因为定时器初始化函数MX_TIM2_Init在初始化时,会将定时器更新中断标志位置1 ,因而当我们调用HAL_TIM_Base_Start_IT后,中断机制启动,NVIC就检测到从定时器更新中断标志位为1,触发中断,进而回调了更新中断的回调函数,因此我们在HAL_TIM_Base_Start_IT函数前清0此标志位就可以了。(使用两种清0标志位的函数都可以)

四.总结

复位模式:重新计数,触发更新中断

门模式:根据电平,高电平继续计数,低电平停止计数。(可以通过设置实现反过来的效果)

触发模式:触发信号可以使定时器开始计数,但不能停止计数,可以配合单脉冲模式使用。

相关推荐
hsjiasb9 小时前
FreeRTOS学习(二十六)——动态内存管理heap_1到heap_5
stm32·单片机·学习·学习笔记·freertos
LCG元10 小时前
STM32+ESP8266+MQTT 物联网气象站:从零搭建温湿度远程监测系统(附完整源码)
stm32·物联网·struts
FakeOccupational12 小时前
【电路笔记 STM32】Cortex-M7 内核上的数据缓存(D-Cache)结构+MPU+DMA&Cache+STM32CubeMX配置
笔记·stm32·缓存
殷忆枫13 小时前
基于K210与STM32的智能垃圾分类与物联网监管系统
stm32·物联网·分类
周洲083013 小时前
STM32 GPIO 外部中断深度解析:边沿触发 / 电平触发、NVIC 优先级配置、中断嵌套实战
stm32·单片机·嵌入式硬件
轻微的风格艾丝凡13 小时前
波形异常记录--零飘过大
嵌入式·硬件工程·dsp
LCG元13 小时前
STM32F103 CAN 总线通信实战:标准库双机通信与过滤器配置精讲
stm32·单片机·嵌入式硬件
zlinear数据采集卡14 小时前
D223的PWM电机控制:6路独立脉冲+加减速算法深度解析
arm开发·stm32·嵌入式硬件·算法·fpga开发·架构
z203483152015 小时前
STM32单片机控制无源蜂鸣器播放《晴天》
stm32·单片机·嵌入式硬件
国科安芯17 小时前
详解ADC 规则组外部触发:CH2、CH3 与 TRGO2
运维·网络·单片机·嵌入式硬件·mcu·系统架构