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 */
}
相关推荐
蒙塔基的钢蛋儿1 小时前
记一次 STM32H723 硬件 Bug 排查:写个 ETH 寄存器,SDRAM 数据飞了
stm32·嵌入式硬件·bug
熊猫_豆豆1 小时前
STM32F103R6 PROTEUS9.0 FREERTOS实现双任务流水灯
stm32·单片机·嵌入式硬件
csg11072 小时前
电路板抗干扰:电容、电感和弧线布线的应用
单片机·嵌入式硬件·物联网·自动化
piaoyiren2 小时前
普中A6 静态数码管显示 数字
单片机·嵌入式·普中a6
Olivia051405143 小时前
共模电感在DC-DC变换器中的自谐振频率(SRF)对EMI滤波性能的影响
单片机·嵌入式硬件
Yunhoa3 小时前
51单片机(1)
单片机·嵌入式硬件·51单片机
dozenyaoyida5 小时前
LSTM 自编码器原理详解:从三门结构到 STM32 端侧异常检测落地
人工智能·stm32·lstm
hongmai6668886 小时前
GD5F1GM7REYIG存储芯片:1Gb SPI NAND Flash助力国产设备高效运行
网络·单片机·嵌入式硬件·物联网·智能家居
纯音乐sjc8 小时前
51单片机入门Day1:从概念到第一个IO操作踩坑记录
单片机·嵌入式硬件·51单片机
JNX_SEMI9 小时前
ATR2652 GNSS双频LNA:0.75dB噪声系数与22dB高增益设计
前端·单片机·嵌入式硬件·物联网·硬件工程