STM 32 TIM定时器(2)

TIM-输入捕获之编码器模式

输入捕获(Input Capture)是一种通过定时器记录输入引脚信号到达时刻的功能,常用于测量外部信号的频率、周期、脉宽等。

采集的精度是4,这里倍频选择4-1

主程序

复制代码
/* USER CODE BEGIN 2 */
	HAL_TIM_Encoder_Start(&htim3,TIM_CHANNEL_ALL);

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
     encoder_cnt = __HAL_TIM_GET_COUNTER(&htim3);
		//检测编码器是否移动
		if(encoder_cnt != encoder_last)
		{
			 encoder_static = 0;
			no_move_time = HAL_GetTick();
			int16_t diff = encoder_cnt - encoder_last;
			if(__HAL_TIM_IS_TIM_COUNTING_DOWN(&htim3))
				printf("逆时针运动:%d,当前位置%d\r\n",diff,encoder_cnt);
			else
				printf("顺时针运动:%d,当前位置%d\r\n",diff,encoder_cnt);
		}
		else
		{
			//超过两秒静止
			if(HAL_GetTick() - no_move_time > 2000 && encoder_static == 0)
			{
				encoder_static = 1;
				printf("当前编码器静止2秒,当前位置:%d\r\n",encoder_cnt);
			}
		}
		
		if(HAL_GPIO_ReadPin(GPIOA,EC11_SW_Pin) == GPIO_PIN_RESET)
		{
			HAL_Delay(20);
			if(HAL_GPIO_ReadPin(GPIOA,EC11_SW_Pin) == GPIO_PIN_RESET)
			{
				printf("SW按钮被按下\r\n");
				while(HAL_GPIO_ReadPin(GPIOA,EC11_SW_Pin) == GPIO_PIN_RESET);
			}
		}
		
		
		/* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}
相关推荐
吠品4 小时前
智谱开源 ZCode 之后,真正的考试才开始
单片机·嵌入式硬件·1024程序员节
小李不想当小白9 小时前
SPI通信外设与W25Q64 (硬件SPI)(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
LCG米9 小时前
STM32驱动W5500以太网模块实测:TCP吞吐瓶颈定位、TX指针回绕陷阱与断线重连保活落地
stm32·单片机·嵌入式硬件·tcp/ip
创界工坊工作室10 小时前
63-基于STC89C52霍尔传感器的智能化电能表设计
stm32·单片机·嵌入式硬件·51单片机·proteus
智购科技自动售货机厂家11 小时前
让AI经营自动售货机:从Project Vend看工具权限与业务规则~YH
大数据·服务器·单片机·嵌入式硬件·深度学习
Zwawa13 小时前
从 printf 到曲线:把数据送上 VOFA+
c语言·单片机·嵌入式
意法半导体STM3213 小时前
【官方原创】LAT6048 如何扩大MP2的A35核和M33核共享内存
stm32·单片机·嵌入式硬件·内存映射·stm32mp2
en.en..13 小时前
STM32(F429)启动模式与两种烧录方式
stm32·单片机·嵌入式硬件
Zw-awa13 小时前
从 printf 到曲线:把数据送上 VOFA+
stm32
单片机仿真设计14 小时前
基于 51 单片机的数字温度计(DS18B20+LCD1602+Proteus 仿真,支持阈值可调声光报警)
单片机·嵌入式硬件·proteus·课设