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 */
}
相关推荐
无痕幽雨2 小时前
STM32实现MQTT及JSON包思路二
stm32·单片机·嵌入式硬件
風清掦2 小时前
【STM32学习笔记-14】WDG看门狗 - 14.2 WWDG窗口看门狗
笔记·stm32·单片机·嵌入式硬件·学习·fpga开发
czhaii3 小时前
单片机伺服电机加减速控制子程序
c语言·单片机
熠速3 小时前
基于PolarLabBox的永磁同步电机(PMSM)零速带载闭环+全速域无感:8小时从理论到落地
单片机·嵌入式硬件·硬件在环半实物仿真
深圳市晶科鑫实业有限公司3 小时前
5G与AIoT时代:如何选择晶振常用频率?
服务器·单片机·物联网·5g·智能路由器·健康医疗·信息与通信
JNX_SEMI3 小时前
EG2031L:220V半桥驱动,1.5A灌流,宽压5V供电
单片机·嵌入式硬件
m0_377108144 小时前
stm32-SPI
stm32·单片机·嵌入式硬件
QiLinkOS4 小时前
从技术到资产的跃迁:企业专利布局的深层逻辑
c语言·数据结构·c++·单片机·嵌入式硬件·算法·开源
踏着七彩祥云的小丑5 小时前
嵌入式测试学习第 22 天:仿真看简易电路,熟悉电路运行逻辑
单片机·嵌入式硬件