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 */
}
相关推荐
fox08153 小时前
栈空间带来的大问题
单片机·嵌入式硬件
wuyk5554 小时前
从零吃透Modbus通信|第3章:STM32 Modbus RTU主机
服务器·开发语言·网络·数据结构·stm32·单片机·嵌入式硬件
恒锐丰小瑞5 小时前
率能SS6285L 18V/5A/单通道直流电机驱动IC,超低导通电阻(58mΩ)与多重保护,用于电子锁/玩具/机器人
单片机·嵌入式硬件·机器人
天空'之城6 小时前
单片机基础核心知识点汇总(二十)
单片机·嵌入式硬件
笨笨饿6 小时前
#121_图传中的H.364编码与MP4的联系
linux·运维·前端·单片机·嵌入式硬件·面试·职场和发展
送外卖的工程师7 小时前
STM32智能鞋柜(机智云)
stm32·单片机·嵌入式硬件
Romantic_love_8 小时前
USART串口初始化源码解析
stm32·单片机·嵌入式硬件·学习
oshan20128 小时前
零基础STM32入门教程--11-USART/UART 串行通迅
stm32·单片机·嵌入式硬件
BW.SU9 小时前
RUI Studio--嵌入式 UI 开发新范式
单片机·ui·嵌入式开发
恒锐丰小瑞10 小时前
率能SS6285M 33V/5.5A/单通道直流电机驱动IC,低待机功耗与多重保护,用于电子锁/玩具/机器人
stm32·单片机·嵌入式硬件·机器人