STM32CubeMX 编码器测速、HAL库、cubemx |
您所在的位置:网站首页 › 速度测速器 › STM32CubeMX 编码器测速、HAL库、cubemx |
文章目录
前言一、STM32CubeMX环境配置1.编码器encoder配置2.定时器TIM9配置3.串口发送配置
二、代码2.1 usart配置2.2主函数开启2.3 encode代码encode.cencode.h
2.4 _it.c代码修改
总结文件下载地址
前言
STM32CubeMX 编码器测速、HAL库、cubemx 通过encoder来获取当前转速。 使用的芯片是stm32f401ccu6 一、STM32CubeMX环境配置 1.编码器encoder配置
这里我们这样配置是为了每10ms(及100HZ)检测速度;并且要打开中断(NVIC) 注意我的时钟频率是 3.串口发送配置见这篇文章 2.2主函数开启开启定时器中断、开启编码器功能 /* USER CODE BEGIN 2 */ HAL_TIM_Base_Start_IT(&htim9);//开启定时器中断 HAL_TIM_Encoder_Start(&htim4,TIM_CHANNEL_ALL);//开启编码器功能 /* USER CODE END 2 */ 2.3 encode代码新建一个encode.h 和encode.c文件 encode.c #include "encode.h" /************************************************************************** 函数功能:单位时间读取编码器计数 入口参数:定时器 返回 值:速度值 **************************************************************************/ int Read_Encoder(void)//读取计数器的值 { int Encoder_TIM; Encoder_TIM=(short)ENCODE_TIMX->CNT; ENCODE_TIMX ->CNT=0; return Encoder_TIM; } encode.h #ifndef __ENCODE_H #define __ENCODE_H #include "main.h" #define ENCODE_TIMX TIM4 int Read_Encoder(void);//读取计数器的值 #endif 2.4 _it.c代码修改首先开头要包含头文件 /* USER CODE BEGIN Includes */ #include #include "encode.h" /* USER CODE END Includes */cubemx生成的代码,采用一个回调函数,所有定时器都在一个定时器里面,通过软件if(htim==(&htim9))才是判断是哪个定时器。 /* USER CODE BEGIN 1 */ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if(htim==(&htim9))//因为我采用的是定时器6 { printf("%d",Read_Encoder()); } } /* USER CODE END 1 */ 总结 文件下载地址 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |