STM32CUBEMX F103 HAL库开发 两路定时器的Encoder编码器模式

2023-11-09

机器人开发过程中,对于直流电机来说,编码器至关重要,它不仅可以使我们对电极进行精确的速度闭环,位置闭环,还可以通过时间积分,根据运动学关系,获得速度、位置等信息

STM32的定时器有编码器模式,大大的方便我们的开发

使用STM32cubeMX配置工具,使得这个过程变得无比简单

我使用STM32cubeMX 开发一个机器人中 使用两个定时器TIM3 和TIM4编码器模式读取编码器的值,做闭环控制
##STM32定时器编码器模式(Encoder Mode)

CubeMX配置过程

选择芯片过程不再赘述

RCC: HSE高速总线始终改为外部晶振
在这里插入图片描述

SYS: DEBUG选择 SW模式
在这里插入图片描述

TIM3 TIM4 配置成定时器模式 Combined Channels: Encoder Mode
encode_tim3.png
encoder_tim4.png

TIM3 TIM4 定时器分频配置: 这里分频数要注意一下,Prescaler 直接给0 ,Counter Period给65535,下面的Encoder Mode 如果是TI1的话就是只计数上升沿的脉冲,如果是TI2 andTI2 就是上下沿都计,脉冲是前一个的两倍

tim_192.png

tim_382.png

TIM Encoder GPIO上拉模式配置,两个定时器四个引脚,全部改成 Pull-Up,即上拉模式,主要用于没有外部上拉的编码器读取时,可以确定引脚电平,防止出错
GPIO.png

时钟树配置
时钟树

工程配置 IDE选择 MDK V5
project

第一栏里选择复制必要的库文件 第二栏里勾选将文件分为.c和.h
codegen

最后点击生成文件
注意 !
工程路径绝对不能有中文名,否则会报错,无法复制stm32的库文件到你的工程

keil中添加处理函数

打开生成的文件,在main.c中初始化的时候开启编码器计数

HAL_TIM_Encoder_Start(&htim3, TIM_CHANNEL_ALL);
HAL_TIM_Encoder_Start(&htim4, TIM_CHANNEL_ALL);

在循环中调用 __HAL_TIM_IS_TIM_COUNTING_DOWN 可以获得当前电机的转向 0为正、1为负

DirectionA = __HAL_TIM_IS_TIM_COUNTING_DOWN(&htim3);     
DirectionB = __HAL_TIM_IS_TIM_COUNTING_DOWN(&htim4);  

在循环中调用 __HAL_TIM_GET_COUNTER 获取计数器的计数值,即编码器的脉冲数

CaptureNumberA=__HAL_TIM_GET_COUNTER(&htim3);
CaptureNumberB=__HAL_TIM_GET_COUNTER(&htim4);

脉冲计算:

我的电机编码器是AB相位差90度,栅格数是96,无减速器,码盘转一圈,A相和B相分别输出96个矩形脉冲,总共输出192个脉冲。
如果使用 Encoder Mode TI1 或者Encoder Mode TI2,码盘转一圈得到的计数值为192。
如果使用Encoder Mode TI1 andTI2 那么得到的脉冲数为384。

ti1_192.png
384.png
电机转过的角度
如果使用Encoder Mode TI1 andTI2 那么

电机真实方向= 0为正、1为负
电机真实角度= 得到的脉冲数 / 384 * 360
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32CUBEMX F103 HAL库开发 两路定时器的Encoder编码器模式 的相关文章

  • STM32CubeMX在FreeRTOS下使用串口进行数据收发(不定长度)

    STM32CubeMX gt FreeRTOS 43 USART接收不定长数据 由于本人做的一个项目功能相对复杂 xff0c 要求使用操作系统 xff0c 且项目工程中有很多需要串口操作的外设 xff0c 所以需要对串口设计不定长的收发功能
  • 【STM32CubeMX】STM32H7-RTOS-SPI-W5500

    工程源码下载 xff1a 基于裸机和Freertos的W5500网络通信工程 目录 1 移植W5500步骤 2 Cobemx配置步骤 2 1 时钟配置Clock Configuration 2 2 Trace and Debug配置 2 3
  • STM32F103 PB3,PB4,PA15,IO不可控问题

    STM32默认启动时PB4 PB3 PA15三个引脚不是普通IO xff0c 而是JTAG的复用功能 xff0c 分别为JNTRST JTDI JTDO 由上可以知要使PB3可以用 须关闭JTAG DP SW DP 可以不管 添加以下配置即
  • STM32F103驱动LD3320语音识别模块

    STM32F103驱动LD3320语音识别模块 LD3320语音识别模块简介模块引脚定义STM32F103ZET6开发板与模块接线测试代码实验结果 LD3320语音识别模块简介 基于 LD3320 xff0c 可以在任何的电子产品中 xff
  • STM32F103控制PCA9685产生16路PWM波控制SG90舵机

    STM32控制PCA9685产生16路PWM波控制SG90舵机 如果你能点开这篇文章 xff0c 说明你已经知道PCA9685是多么强大 xff0c NXP公司原本做这片芯片是为了提供给LED使用 xff0c 在其官方文档里也能看到所有PW
  • STM32F103 GPIO内部电路图

    GPIO结构图 GPIO工作模式 输入模式 输入浮空 输入上拉 输入下拉 模拟输入 输出模式 开漏输出 开漏复用功能 推挽式输出 推挽式复用功能 输入浮空 输入上拉 输入下拉 模拟输入 开漏输出 开漏复用功能 推挽式输出 推挽式复用功能
  • stm32cubeMx 软件的删除用户代码的问题总结

    今天研究了一下stm32cubeMx 这个软件 若是stm32 的项目比较紧急 可以使用这个软件来生成驱动代码 至于在这个软件中的模块代码的选择 配置 我这里不会多说 因为网上很多 我这里主要 总结stm32cubeMx 会删除用户代码的问
  • STM32中待机模式与看门狗的冲突问题

    最近在做刚刚入职的第一个STM32的项目 需要用到按键进入以及退出低功耗 待机模式 同时也要用到看门狗 排除进入低功耗待机模式的一些问题后加入看门狗 发现独立看门狗无法关闭 这样导致了待机模式无法进入 首先介绍一下STM32低功耗 按功耗由
  • Keil编辑和STM32cubemx配置STM32控制步进电机

    使用Keil ARM V5 IDE编程和STM32CUBEMX代码配置实现STM32F103和步进电机驱动器模块A4988控制步进电机 Keil和Stm32cubemx 安装 安装Keil IDE非常简单 下载包含Keil IDE的MDK
  • 基于HAL库的FREERTOS----------二.任务API函数

    任务API函数览概 CUBEMX对 做了API的封装 很多 的函数没有封装到位 可以用原函数调用 任务API函数分别介绍 1 uxTaskPriorityGet 此函数用来获取指定任务的优先级 要使用此函数的话宏 INCLUDE uxTas
  • 入门stm32简单电灯实验

    看原理图找内置LED接线 stm32f103 我这边是接的 PE5 外设时钟使能寄存器的相关配置 因为LED1接的是PE5 所以GBIO端口E 查看中文手册获取GPIOE寄存器起始地址0x4001 1800 通过查看系统架构 可以发现GPI
  • 【STM32】HAL库——ADC

    前期准备 STM32CubeMX STM32RCT6核心板 IDE Keil MDK ARM STM32CubeMX部分 1 配置时钟 选择STM32F103RCTx系列芯片 配置时钟的同时会自动配置IO口引脚 将HCLK设置为最大频率72
  • stm32Cubemx:串口的空闲中断和接收中断------stm32f407zgt6

    介绍串口的接收中断与空闲中断 这两种中断都是在串口进行接收时可能会发生的中断 串口接收中断即每当串口完成一次接收之后触发一次中断 在 STM32 中相应的中断处理函数为 USARTx IRQHandler 中断回调函数为 HAL UART
  • 基于HAL库stm32f1的DS18B20温度传感器

    由于做比赛 所以写了温度传感器 记录一下 一 介绍 DS18B20是常用的数字温度传感器 其输出的是数字信号 具有体积小 硬件开销低 抗干扰能力强 精度高的特点 1 DS18B20数字温度传感器接线方便 封装成后可应用于多种场合 如管道式
  • RT-Thread 应用篇 — 在STM32L051上使用 RT-Thread (二、无线温湿度传感器 之 CubeMX配置)

    应用篇 在STM32L051上使用RT Thread 第二篇 使用STM32CubeMX 进行对应外设配置 同时做一些简单测试 目录 前言 一 使用 STM32CubeMX 配置 1 1 基础步骤 1 2 修改配置 1 3 踩坑记录 二 初
  • VSCode搭建STM32开发环境

    废话不多说 直接步入正题 所需软件如下 GNU Arm Embedded Toolchain Mingw w64 make openocd STM32CubeMx VSCode 一 环境篇 1 GNU Arm Embedded Toolch
  • STM32进入STOP模式并唤醒实验总结

    项目需求 需要实现设备低功耗功能 实现过程中遇到几个问题 以此记录总结 stm32f103ret6 问题一 执行PWR EnterSTOPMode PWR Regulator LowPower PWR STOPEntry WFI 后 程序继
  • STM32配合火焰传感器的火灾报警

    实验材料 STM32F03 我这里用的是正点原子的战舰 火焰传感器 还有个蜂鸣器 我这个开发板自带 也是可外接的 火焰传感器介绍 工作原理 传感器模块在环境火焰光谱或者光源达不到设定阈值时 DO 口输出低电平 当外界环境火焰光谱或者光源超过
  • STM32CubeMX时钟源的选择

    使用STM32CubeMX进行时钟源RCC配置的时候 可以选择使用内部时钟或外部时钟 当程序对时钟精度要求较高时 通常使用外部时钟 下拉选框如下图 Disable 禁用外部时钟 BYPASS Clock Resource 外部有源晶振 旁路
  • 在 Atollic TrueStudio、STM32CubeMX 中导入 C 库

    我目前正在开发 STM32F767ZI Nucleo 板和一个小安全芯片 microchip atecc508a 通过 i2c 连接进行连接 该芯片有一个可用的库加密验证库 https github com MicrochipTech cr

随机推荐

  • 【SpringBoot应用篇】SpringBoot+MybatisPlus集成国产DM8(达梦)数据库

    SpringBoot应用篇 SpringBoot MybatisPlus集成国产DM8 达梦 数据库 简介和安装 基本概念介绍 SpringBoot MP整合DM8 pom yml Address AddressMapper 启动类 测试类
  • CESM:手动inputdata

    参考教程 CESM2笔记 porting 新机器移植 cesm2创建case J同学的大气笔记的博客 CSDN博客 ftp链接失效 试试通过cmd下载cam学习材料 cesm为什么不能直接下载数据 J同学的大气笔记的博客 CSDN博客 ca
  • QTreeView默认选中某个节点的方法

    最近使用Qt做个界面 使用了QTreeView显示一个树形数据 想在界面打开时 默认选中某个节点 网上搜索全是MFC的TreeView的 在这里记一下QTreeView的方法 QTreeView的基本使用 QStandardItemMode
  • Django知识点

    MTV M 模型 model 主要操作数据库等 T 模板 template 代替了MVC模型的view 主要定义前端 调用view等 V 视图 view 代替MVC模型的controller 主要接受用户请求 调用model 调用templ
  • Qt扫盲-QVariant理论使用总结

    Qt扫盲 QVariant理论使用总结 一 概述 二 使用用例 三 关于GUI类型的说明 四 连续使用canConvert 和convert 一 概述 QVariant 是一个用来存放变体数据的工具类 因为c 禁止 union 包含具有非默
  • 深度学习和日常代码中遇到的报错汇总及解决方案,持续更新中。。。。

    本文是深度学习和日常代码中遇到的报错汇总 因时间比较久 暂时都没有图片 只有文字描述 解决方案也大多参考网上的解决方案 有些有用 有些没有效果 本文章中的问题 也仅是本人遇到的问题 使用列举的方案已经解决 1 报错 RuntimeError
  • 【无监督学习】遗传算法Genetic Algorithm(含代码实现)

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • Macbook Pro 突然无声音播放,硬件设备都没问题。

    打开Terminal 终端 就是黑色框框那个 跟Windows cmd差不多那个 输入命令 sudo killall coreaudiod 因为看到好多人说重置那个SMC 浪费时间 先用这个命令试试 基本可以解决
  • 纯前端css实现酷炫loading动画

    纯前端css实现酷炫loading动画 1 平滑加载 2 按步加载 3 虚线加载 4 电池加载 5 内嵌加载 6 斑马线加载 7 水柱加载 8 信号加载 9 四个动点加载 1 平滑加载 div class progress 1 div pr
  • MVP 实现登录注册

    http blog csdn net dfskhgalshgkajghljgh article details 51317956
  • react+antd系列之日期选择框DatePicker

    1 默认时间
  • stm32cubemx生成不了keil工程文件_STM32cubeMX教程定时器实现定时1秒LED闪烁

    软件 STM32CubeMX V4 25 0 keil u5 固件库版本 STM32Cube FW F1 V1 6 1 硬件 OneNet 麒麟座V1 4 在STM32CubeMX中新建项目 选择正确的MCU型号 首先设置RCC和SYS 如
  • 若依图片文件上传

    1 前端代码 使用若依自带的
  • Grafana ALert功能使用webhook,并预警数据信息

    使用webhook预警的时候如果能够同时获取预警的数据信息是最好不过的 这里我们就来看下怎么获取这些东西 数据源依然选用InfluxDB 具体配置过程可以参考前边两篇文章 现在从webhook配置开始 无参对接 在Grafana的Alert
  • LeetCode108.将有序数组转换为二叉搜索树

    题目来源 108 将有序数组转换为二叉搜索树 力扣 LeetCode 二叉搜索树定义 二叉搜索树 Binary Search Tree 又 二叉查找树 二叉排序树 它或者是一棵空树 或者是具有下列性质的 二叉树 若它的左子树不空 则左子树上
  • 2023华为OD机试真题【处理器问题/深度优先搜索】

    题目描述 某公司研发了一款高性能AI处理器 每台物理设备具备8颗AI处理器 编号分别为0 1 2 3 4 5 6 7 编号0 3的处理器处于同一个链路中 编号4 7的处理器处于另外一个链路中 不同链路中的处理器不能通信 现给定服务器可用的处
  • mysql 读写分离

    读写分离引入时机 大多数互联网业务中 往往读多写少 这时候数据库的读会首先成为数据库的瓶颈 如果我们已经优化了SQL 但是读依旧还是瓶颈时 这时就可以选择 读写分离 架构了 读写分离首先需要将数据库分为主从库 一个主库用于写数据 多个从库完
  • C/C++中浮点数的存储方式

    原文地址 C C 中浮点数的存储方式 作者 andyhzw 根据国际标准IEEE 754 任意一个二进制浮点数V可以表示成下面的形式 V 1 s M 2 E 1 1 s表示符号位 当s 0 V为正数 当s 1 V为负数 2 M表示有效数字
  • 使用umi3和antd pro5从零实现全栈中后台管理系统

    0 前言 使用umi3和antd pro5从零实现全栈中后台管理系统 0 1 涉及技术栈 前端 TS React React Hooks umi3 antd pro5 后端 express mongodb jwt 0 2 实现的功能 后端用
  • STM32CUBEMX F103 HAL库开发 两路定时器的Encoder编码器模式

    机器人开发过程中 对于直流电机来说 编码器至关重要 它不仅可以使我们对电极进行精确的速度闭环 位置闭环 还可以通过时间积分 根据运动学关系 获得速度 位置等信息 STM32的定时器有编码器模式 大大的方便我们的开发 使用STM32cubeM