0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32CubeMx配置定时器的编码器模式

CHANBAEK 来源:小李的创客实验室 作者:小李的创客实验室 2023-08-21 11:47 次阅读

STM32CubeMx配置定时器编码器模式

上次文章写了编码器是如何工作的,今天就来用STM32F103C8T6的TIM3的通道1跟通道2编写一个编码器识别程序。

编程思路:

A相:TIM3_CH1

B相:TIM3_CH2

SWITCH:PB5(外部中断的方式)

实现效果:

编码器顺时针旋转编码器计数值 +1

编码器逆时针旋转编码器计数值 -1

按下SWITCH编码器计数值值清 0

话不多说,上教程

1.配置时钟

  • 选择外部高速时钟源HSE

图片
在这里插入图片描述

2.配置SWITCH管脚为外部中断模式(默认上拉)

  • 选择中断模式触发下降沿有效
  • 默认是上拉输入
  • 添加用户标签为SWITCH

图片
在这里插入图片描述

使能NVIC配置

图片
在这里插入图片描述

3.配置定时器管脚为编码器模式

  • 选择编码器模式
  • 分频值设置为2-1
  • 计数值设置为1
  • 自动重装载值1
  • 自动重载使能
  • 通道1,2都计数
  • 都是上升沿有效

图片
在这里插入图片描述

4.配置时钟到72MHz

  • 手动输入72MHz自动匹配

图片
在这里插入图片描述

5.配置工程属性

  • 填写工程名字
  • 选择工程路径
  • 选择工程平台(KEIL MDK)图片

6.配置工程代码属性

  • 拷贝必要的库文件
  • 单独形成.c跟.h文件

图片
在这里插入图片描述

7.生产工程并添加修改代码

  • 直接打开工程
  • 修改必要代码

图片
在这里插入图片描述

7.1修改定时器代码

  • 添加一个自定义结构体
/* USER CODE BEGIN Private defines */

typedefstruct
{
	int Encoder_Val;
	int Encoder_Dir;
}EC11_t;

extern EC11_t EC11;
/* USER CODE END Private defines */

编写一个中断回调函数

编写回调函数逻辑代码

/* USER CODE BEGIN 0 */
EC11_t                   EC11;
/* USER CODE END 0 */

/* USER CODE BEGIN 1 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	 uint8_t dir = 0;
	 if(htim == &htim3)
	 {
		 dir =  __HAL_TIM_IS_TIM_COUNTING_DOWN(&htim3);
		 if(dir==1)
		 {
			 EC11.Encoder_Val++;
			 EC11.Encoder_Dir =  1;
		 }
		 if(dir==0)
		 {
			 EC11.Encoder_Val--;
			 EC11.Encoder_Dir = -1;
		 }
	 }
}
/* USER CODE END 1 */

7.2修改外部中断代码

添加一个中断回调函数

/* USER CODE BEGIN 1 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	EC11.Encoder_Val = 0;
}
/* USER CODE END 1 */

7.3修改初始化代码

/* USER CODE BEGIN TIM3_Init 2 */
	__HAL_TIM_CLEAR_IT(&htim3,TIM_IT_UPDATE);
	HAL_TIM_Encoder_Start(&htim3, TIM_CHANNEL_ALL);
	__HAL_TIM_ENABLE_IT(&htim3,TIM_IT_UPDATE);
  /* USER CODE END TIM3_Init 2 */

8.下载调试代码

  • 现象1顺时针旋转编码器值加1

图片
在这里插入图片描述

  • 现象2顺时针旋转编码器值减1

图片
在这里插入图片描述

  • 按键按下编码器值清零

图片
在这里插入图片描述

9.总结

至此编码器已经全部写完了。STM32CubeMx的使用比较方便,注意一点就是如果修改代码尽量写到英文的注释中去,这样即使再重新修改CubeMx配置重新生成代码也不会改变原来的程序,否则原来的代码就没了,别问我咋知道的血泪的教训啊!!!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编码器
    +关注

    关注

    45

    文章

    3584

    浏览量

    134112
  • 程序
    +关注

    关注

    116

    文章

    3773

    浏览量

    80831
  • 旋转编码器
    +关注

    关注

    5

    文章

    158

    浏览量

    25945
  • STM32F103C8T6
    +关注

    关注

    107

    文章

    160

    浏览量

    83203
  • stm32cubemx
    +关注

    关注

    5

    文章

    280

    浏览量

    14746
收藏 人收藏

    评论

    相关推荐

    STM32CubeMx入门教程(3):定时器的使用

    导语“ 使用STM32CubeMx 生成初始化定时器代码,实现定时器特定定时
    发表于 07-11 15:22 3841次阅读
    <b class='flag-5'>STM32CubeMx</b>入门教程(3):<b class='flag-5'>定时器</b>的使用

    STM32CubeMx入门教程(4):PWM应用

    导语“使用STM32CubeMx配置定时器输出PWM波,生成初始化代码。”
    发表于 07-11 15:23 2326次阅读
    <b class='flag-5'>STM32CubeMx</b>入门教程(4):PWM应用

    stm32cubemx配置定时器

    stm32cubemx配置定时器,文章目录前言keil主函数时钟配置中断响应CUBE主函数配置函数中断响应前言本文主要介绍使用keil和
    发表于 08-10 07:55

    Stm32CubeMx基本定时器的概念

    Stm32CubeMx基本定时器基本定时器概念Stm32CubeMx 配置基本配置
    发表于 08-18 08:18

    怎样利用STM32cubeMX库去配置编码器模式

    霍尔编码器测速原理是什么?怎样利用STM32cubeMX库去配置编码器模式
    发表于 09-10 07:32

    请问STM32CubeMX配置Encoder模式如何驱动EC11旋转编码器

    请问STM32CubeMX配置Encoder模式如何驱动EC11旋转编码器
    发表于 11-18 07:48

    STM32CubeMX环境配置的相关资料推荐

    STM32CubeMX-----配置编码器电机的测速前言一、STM32CubeMX环境配置1.配置
    发表于 01-10 08:08

    【MCU】基于STM32CubeMX定时器中断实现LED闪烁

    基于STM32CubeMX定时器中断实现 LED 闪烁本实验基于STM32CubeMX实现对STM32开发板的配置,通过
    发表于 10-29 11:06 20次下载
    【MCU】基于<b class='flag-5'>STM32CubeMX</b><b class='flag-5'>定时器</b>中断实现LED闪烁

    STM32单片机定时器1设置成为AB项编码器模式

    STM32单片机定时器1设置成为AB项编码器模式大家好·,我是DXZ,这篇博客是使用STM32单片机定时
    发表于 11-18 15:21 21次下载
    <b class='flag-5'>STM32</b>单片机<b class='flag-5'>定时器</b>1设置成为AB项<b class='flag-5'>编码器</b><b class='flag-5'>模式</b>

    STM32CUBEMX配置教程(十二)STM32定时器触发的固定频率ADC采样(使用DMA)

    STM32CUBEMX配置教程(十二)STM32定时器触发的固定频率ADC采样(使用DMA)
    发表于 11-24 13:51 85次下载
    <b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>配置</b>教程(十二)<b class='flag-5'>STM32</b>的<b class='flag-5'>定时器</b>触发的固定频率ADC采样(使用DMA)

    STM32CUBEMX配置教程(十三)STM32定时器触发的固定频率DAC输出(使用DMA)

    STM32CUBEMX配置教程(十三)STM32定时器触发的固定频率DAC输出(使用DMA)
    发表于 11-24 14:06 46次下载
    <b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>配置</b>教程(十三)<b class='flag-5'>STM32</b>的<b class='flag-5'>定时器</b>触发的固定频率DAC输出(使用DMA)

    STM32定时器单脉冲模式及其应用

    STM32定时器可以配置为单脉冲模式,所谓的单脉冲就是通过配置定时器使其在一个可控延时后,产生
    发表于 11-25 11:06 64次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>定时器</b>单脉冲<b class='flag-5'>模式</b>及其应用

    STM32F407定时器编码器模式简介

    STM32F407定时器编码器模式
    发表于 03-31 17:14 8556次阅读
    <b class='flag-5'>STM32</b>F407<b class='flag-5'>定时器</b><b class='flag-5'>编码器</b><b class='flag-5'>模式</b>简介

    详解stm32定时器编码器模式

    增量式编码器在实际应用中还是很常见。stm32定时器带的也有编码器模式。所用的编码器是有ABZ
    的头像 发表于 01-19 09:14 8865次阅读
    详解<b class='flag-5'>stm32</b><b class='flag-5'>定时器</b>的<b class='flag-5'>编码器</b><b class='flag-5'>模式</b>

    STM32CubeMx定时器编码器模式基本使用方法

    增量式编码器在实际应用中还是很常见。stm32定时器带的也有编码器模式。所用的编码器是有ABZ
    发表于 06-01 14:36 5650次阅读
    <b class='flag-5'>STM32CubeMx</b><b class='flag-5'>定时器</b><b class='flag-5'>编码器</b><b class='flag-5'>模式</b>基本使用方法