STM32CubeMX 编码器测速、HAL库、cubemx

您所在的位置:网站首页 速度测速器 STM32CubeMX 编码器测速、HAL库、cubemx

STM32CubeMX 编码器测速、HAL库、cubemx

#STM32CubeMX 编码器测速、HAL库、cubemx| 来源: 网络整理| 查看: 265

文章目录 前言一、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配置

定时器4encoder模式配置 我用的是TIM4,我们开启encoder mode,然后选择四倍频,滤波填写10。

2.定时器TIM9配置

在这里插入图片描述 84MHZ 你的要是72的话你就改成 7200-1 要打卡nvic中断哈!!! 在这里插入图片描述

这里我们这样配置是为了每10ms(及100HZ)检测速度;并且要打开中断(NVIC) 注意我的时钟频率是

3.串口发送配置

在这里插入图片描述

二、代码 2.1 usart配置

见这篇文章

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