环境
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;
}