STM32 光栅编码器Demo

环境

win10、MDK5、Cube、STM32F071CBTx

工程下载

GitHub:https://github.com/Shaynerain/STM32Capture

CSDN:https://download.csdn.net/download/shaynerain/12709976

Cube配置

1、首先正常设置RCC时钟等(48M)

2、TIM2设置编码器模式

3、设置TIM2参数,Counter Period 可根据需要设置成对应编码器线数来设置此处直接最大值,EncoderModer一般上升下降沿都采集即Encoder Mode TI1 and TI2;设置一些滤波,如果没有滤波会有噪声影响;

4、TIM3设置成10ms定时器,计算10ms技术多少次,然后打印显示速度,可按照需求更改

KEIL程序

1、根据上述生成文件后,打开main文件,添加启动

 /* USER CODE BEGIN 2 */
	HAL_TIM_Encoder_Start(&htim2, TIM_CHANNEL_ALL);
	HAL_TIM_Base_Start_IT(&htim3);
	
  /* USER CODE END 2 */

2、添加定时器回调函数

int32_t cnt=0;
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	cnt = TIM2->CNT;
	TIM2->CNT = 0;
	//cnt = cnt /20000 * 360 /0.01 ;
	cnt = cnt * 0.3;
	printf("Line1=%d;\r\n",cnt);
}

3、添加printf支持

#include "stdio.h"
int fputc(int ch,FILE *f)
{
    uint8_t temp[1]={ch};
    HAL_UART_Transmit(&huart1,temp,1,2);
		return 0;
}

from:https://blog.csdn.net/shaynerain

猜你喜欢

转载自blog.csdn.net/shaynerain/article/details/108051707