STM32 定时器外部时钟与循迹模块

    1、上篇文章介绍了定时器使用内部时钟信号计数,实现计数、更新中断等功能。
    2、可不可以利用定时器对来自外部的信号进行计数?也就是对输入io的信号计数?
    3、可以

1、定时器外部时钟

    STM32的通用定时器和高级定时器都将外部信号引入了触发控制器。
    但并不是直接的,STM32为每个输入通道都配备了输入滤波器边沿检测器,方便灵活的配置和使用。

1.1 TIM INPUT介绍

    1、在STM32F103上,每个定时器有4个输入通道:TI1、TI2、TI3、TI4(TI是TIM INPUT缩写),其中TI3、TI4并没有接入到触发控制器。这里讨论TI1、TI2。对于TI1来说其边沿检测器输出的脉冲信号有两个:TI1FP1、TI1FP2。这里讨论TI1FP1,它会直接到达触发控制器内部。另外TI1上还有一根称为TI1_ED的信号也会到达触发控制器 前。

    2、TI1_ED和TI1FP1、TI1FP2的区别是:TI1FP1、TI1FP2可以选择是上升沿还是下降沿或者双边沿触发,TI1_ED只能是双边沿触发。

    3、这三个信号我们只能选择一个作为定时器的触发源,需要通过一个叫触发器的结构来选择其中一个通道,最终到达从模式控制器。

1.2 ETR介绍

    1、除了上面三个信号,还有一个外部触发器ETR最终也能进入从模式控制器,这条通路叫做外部时钟模式1。

    2、外部时钟模式2可以直接到达触发控制器。

    3、整体框图如下:
在这里插入图片描述

2、定时器外部时钟使用

    红外循迹模块,可以检测黑白线的变化,并反映在DO引脚上,我们将改脚作为定时器外部信号,就可以对外部的变化实现计数。
在这里插入图片描述

2.1 ETR外部时钟模式1 配置、使用

2.1.1、配置

    1、选择定时器2的时钟源为ETR,可以看见右侧PA0引脚变成TIM2_ETR。所以我们将红外循迹模块的DO引脚接在PA0上即可。
    2、下面Clock Filter设置最大15,来解决在黑白线边界时带来的电平跳变、抖动。
在这里插入图片描述

    3、i2c1也打开,将计数值打印在oled上。
    4、保存生成代码。

2.1.2、coding

  OLED_Init();
  OLED_Clear();
  HAL_TIM_Base_Start(&htim2);
  int counter;
  char message[20];
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
	  counter = __HAL_TIM_GET_COUNTER(&htim2);
	  sprintf(message,"counter:%d",counter);
	  OLED_PrintString(0, 0, message);
	  HAL_Delay(100);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }

2.1.3、效果

    1、使用黑白线在红外循迹模块下来回晃动观察counter的变化。
在这里插入图片描述

2.2 ETR外部时钟模式2 配置、使用

    1、外部时钟模式2通道最终进入从模式控制机,需要借助从模式
在这里插入图片描述
    2、效果与之前一样。

2.3 TI外部时钟模式配置、使用在这里插入图片描述

定时器从模式???

最近更新

  1. TCP协议是安全的吗?

    2024-04-05 05:30:09       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-05 05:30:09       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-05 05:30:09       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-05 05:30:09       18 阅读

热门阅读

  1. 什么是机器学习?

    2024-04-05 05:30:09       12 阅读
  2. 机器学习之常用的回归预测模型

    2024-04-05 05:30:09       15 阅读
  3. 【Trick】机器学习技术路线

    2024-04-05 05:30:09       15 阅读
  4. 课时85:流程控制_函数基础_基础知识

    2024-04-05 05:30:09       10 阅读
  5. Ubuntu22.04虚拟环境安装CUDA10.1, CUDNN和pytorch

    2024-04-05 05:30:09       14 阅读
  6. Qt与OpenCV实现图像模板匹配

    2024-04-05 05:30:09       13 阅读
  7. MySQL中 in 和 exists 区别

    2024-04-05 05:30:09       13 阅读
  8. 使用Python写简单的点云harris 3D关键点检测

    2024-04-05 05:30:09       13 阅读
  9. HDFS、TFS 和 Ceph的对比(通往架构师的路上)

    2024-04-05 05:30:09       9 阅读