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 小时前
单片机基础核心知识点汇总(四十)
单片机·嵌入式硬件
smartpi_ai2 小时前
离线语音模块误识别问题全面解决方案:命令词设计、防误触与灵敏度调优指南
人工智能·单片机·语音识别
LCG元2 小时前
STM32F103 驱动 HX711 称重实战:DOUT 就绪时序、增益切换陷阱与两点标定精度实测
stm32·单片机·嵌入式硬件
染予2 小时前
代码中相关C语言知识点总结
stm32
优信电子3 小时前
STM32 驱动 DHT30 测量环境温湿度(兼容SHT30):从时序解析到完整代码实战
stm32·嵌入式·传感器·sht30·温湿度·环境测量·dht30
小李不想当小白4 小时前
DMA直接存储器存取(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·分享
朝发如雪5 小时前
快速掌握单片机基础(6)(数据处理与传送指令)(跳转与分支指令)(栈操作与混合编程)(程序状态寄存器操作指令)(内存映射)
单片机·arm
blue_ice .5 小时前
Verilog DDS 数字信号发生器:DAC 输出模拟波形与 ADC 回采观测
开发语言·单片机·嵌入式硬件·fpga开发
远翔调光芯片^138287988725 小时前
ECP5702能芯科技PD取电芯片在市场上的优势有哪些?
开发语言·人工智能·单片机·嵌入式硬件·智能家居
时空自由民.5 小时前
WSL解决USB 串口连接问题与linux串口权限问题
linux·单片机