stm32 HAL库 4096线ABZ编码器

news2025/4/22 20:13:34

@[TOC]目录

ABZ编码器 4096线

买的是这个
在这里插入图片描述
AB相代表计数方向,Z代表过零点
在这里插入图片描述

cubemx配置

定时器Encoder

在这里插入图片描述

也可以选上DMA
在这里插入图片描述

中断
在这里插入图片描述

Z相GPIO中断

找一个空闲管脚
在这里插入图片描述
打开对应中断
在这里插入图片描述

代码

不用DMA

int main(void)
{
    short Enc_cnt = 0;
    HAL_TIM_Encoder_Start_IT(&htim4,TIM_CHANNEL_1|TIM_CHANNEL_2);		//开启定时器的编码器模式中断
    while (1)
    {
        Enc_cnt = (short)__HAL_TIM_GET_COUNTER(&htim4);
		float angle = 360.0/4.0/4096.0*(float)Enc_cnt;
    }
}
//GPIO中断,过零点清零
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
    if(GPIO_Pin == GPIO_PIN_13){/* KEY */  
        /* 翻转LED */
        HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);
//			__HAL_TIM_SET_COUNTER(&htim4, 0);
			if(__HAL_TIM_IS_TIM_COUNTING_DOWN(&htim4)){
				htim4.Instance->CNT+=16384; //4*4096
			}
			else{
				htim4.Instance->CNT-=16384;
			}
    } 
}

用DMA

int main(void)
{
    short Enc_cnt = 0;
    uint32_t encoderValue[2];
	HAL_TIM_Base_Start(&htim4);
	HAL_TIM_Encoder_Start_DMA(&htim4,TIM_CHANNEL_1|TIM_CHANNEL_2,&encoderValue[0],&encoderValue[1],2);
    while (1)
    {
        Enc_cnt = (short)__HAL_TIM_GET_COUNTER(&htim4);
		float angle = 360.0/4.0/4096.0*(float)Enc_cnt;
    }
}
//GPIO中断,过零点清零
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
    if(GPIO_Pin == GPIO_PIN_13){/* KEY */  
        /* 翻转LED */
        HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);
//			__HAL_TIM_SET_COUNTER(&htim4, 0);
			if(__HAL_TIM_IS_TIM_COUNTING_DOWN(&htim4)){
				htim4.Instance->CNT+=16384;
			}
			else{
				htim4.Instance->CNT-=16384;
			}
    } 
}

效果

过机械零点就+/-360
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1346039.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智慧园区物联综合管理平台之感知连接管理能力简述

物联管理平台感知连接管理主要实现物联传感层设备设施接入通道、 协议解析、 安全保证、 实时数据采集、 控制等管理。 主要包含: 物联南向接入通道管理、 设备智能化协议解析适配(含非设备类物联传感接入)、 物联传感接入注册、 物联传感安全鉴权、 物联感知数据的汇聚/处理…

普中STM32-PZ6806L开发板(使用过程中的问题收集)

Keil使用ST-Link 报错 Internal command error 描述: 在某一次使用过程中,前面都是正常使用, Keil在烧录时报错Internal command error, 试了网上的诸多方式, 例如 升级固件;ST-Link Utility 清除;Keil升级到最新版本;甚至笔者板子的Micro头也换了,因为坏…

kali2.0安装VMware Tools 和自定义改变分辨率

kali2.0安装VMware Tools 和自定义改变分辨率 VMware Tools 简介:VMware Tools安装:自定义改变分辨率:xrandr命令修改分辨率: 前言: 因为kali2.0比较老 所以需要手动安装 WMware Tools 进行复制粘贴操作! …

CA和证书

安全机制 墨菲定律 如果有两种选择,其中一种将导致灾难,则必定有人会作出这种选择。即:做事不要有侥幸心理。 常用安全技术 认证、授权、审计、安全通信 加密算法和协议 对称加密算法 加密和解密使用同一个秘钥。 特性 加密、解密使…

代码随想录刷题第三十五天| 860.柠檬水找零 ● 406.根据身高重建队列 ● 452. 用最少数量的箭引爆气球|

代码随想录刷题第三十五天 柠檬水找零 (LC 860) 题目思路: 代码实现: class Solution:def lemonadeChange(self, bills: List[int]) -> bool:five 0ten 0for money in bills:if money 5:five1if money 10:if five>0:five-1ten1else:return …

【基于C++HTTP 服务器的epoll 改造】

打印模块 Log.hpp 方便使用 #pragma once#include <iostream> #include <string> #include <ctime>#define INFO 1 #define WARNING 2 #define ERROR 3 #define FATAL 4#define LOG(level, message) Log(#level, message, __FILE__, __LINE__)void …

【Python特征工程系列】教你利用XGBoost模型分析特征重要性(源码)

这是Python特征工程系列原创文章&#xff0c;我的第186篇原创文章。 一、问题 应用背景介绍&#xff1a; 如果有一个包含数十个甚至数百个特征的数据集&#xff0c;每个特征都可能对你的机器学习模型的性能有所贡献。但是并不是所有的特征都是一样的。有些可能是冗余的…

RK3568测试tdd

RK3568测试tdd 一、门禁取包二、烧录三、跑tdd用例四、查看结果参考资料 一、门禁取包 右键复制链接&#xff0c;粘贴下载&#xff1b;解压到文件夹&#xff1b; 二、烧录 双击\windows\RKDevTool.exe打开烧写工具&#xff0c;工具界面击烧写步骤如图所示&#xff1a; 推荐…

部署es集群

在单机上利用docker容器运行多个es实例来模拟es集群。不过生产环境推荐大家每一台服务节点仅部署一个es的实例。部署es集群可以直接使用docker-compose来完成&#xff0c;但这要求你的Linux虚拟机至少有4G的内存空间 创建es集群 编写docker-compose文件 首先编写一个docker-…

微信公众号没有留言功能,怎么破?

为什么公众号没有留言功能&#xff1f;2018年2月12日&#xff0c;TX新规出台&#xff1a;根据相关规定和平台规则要求&#xff0c;我们暂时调整留言功能开放规则&#xff0c;后续新注册帐号无留言功能。这就意味着2018年2月12日号之后注册的公众号不论个人主体还是组织主体&…

[spark] SaveMode

https://spark.apache.org/docs/latest/api/java/index.html?org/apache/spark/sql/SaveMode.html Overwrite 覆盖模式是指将DataFrame保存到数据源时&#xff0c;如果数据/表已经存在&#xff0c;则现有数据将被DataFrame的内容覆盖。 注意: Overwrite 模式会覆盖已存在的表…

最优轨迹生成(三)—— 无约束BIVP轨迹优化

本系列文章是学习深蓝学院-移动机器人运动规划课程第五章最优轨迹生成 过程中所记录的笔记&#xff0c;本系列文章共包含四篇文章&#xff0c;依次介绍了微分平坦特性、无约束BVP轨迹优化、无约束BIVP轨迹优、 带约束轨迹优化等内容 本系列文章链接如下&#xff1a; 最优轨迹生…

ElasticSearch历史版本/老版本下载

下载地址 https://www.elastic.co/cn/downloads/past-releases#elasticsearch 搜索所需版本并下载

Grafana增加仪表盘

1.Grafana介绍 grafana 是一款采用Go语言编写的开源应用&#xff0c;主要用于大规模指标数据的可视化展现&#xff0c;是网络架构和应用分析中最流行的时序数据展示工具&#xff0c;目前已经支持绝大部分常用的时序数据库。 Grafana下载地址&#xff1a;https://grafana.com/g…

【网络奇遇记】揭秘计算机网络的性能指标:时延带宽积|往返时间|利用率|丢包率

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、数据结构 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;上期回顾一. 时延带宽积二. 往返时间三. 利用率四. 丢包率&#x1f4dd;结语 &#x1…

李宏毅 自然语言处理(Speech Recognition) 笔记

李宏毅NLP(自然语言处理)完整课程&#xff0c;强推&#xff01;_哔哩哔哩_bilibili 从Ng那里跑路来学NLP了&#xff0c;之前其实ML入门听的就是宝可梦捕获大师&#xff08;&#xff09;的课&#xff0c;目前计划是&#xff0c;本博文作为上面链接所示课程的笔记记录。听完之后…

sklearn 中matplotlib编制图表

代码 # 导入pandas库&#xff0c;并为其设置别名pd import pandas as pd import matplotlib.pyplot as plt# 使用pandas的read_csv函数读取名为iris.csv的文件&#xff0c;将数据存储在iris_data变量中 iris_data pd.read_csv(data/iris.txt,sep\t)# 使用groupby方法按照&quo…

VMware ESXi常用查看RAID和磁盘信息工具及命令汇总

一、Esxcli 使用 Esxcli 命令可获取有关 vSAN 的信息&#xff0c;以及对您的 vSAN 环境进行故障排除。 可用命令如下&#xff1a; 命令描述esxcli vsan network list确认哪些 VMkernel 适配器可用于 vSAN 通信。esxcli vsan storage list列出由 vSAN 声明的存储磁盘。esxcli…

MIT线性代数笔记-第34讲-左右逆,伪逆

目录 34.左右逆&#xff0c;伪逆左右逆伪逆 打赏 34.左右逆&#xff0c;伪逆 左右逆 之前讲到的逆都是针对可逆方阵而言的&#xff0c;对于长方矩阵&#xff0c;实际上也有广义的逆&#xff0c;那就是左逆和右逆 左逆 当矩阵列满秩&#xff0c;即 r n r n rn时&#xff0c;…

springcloud微服务篇--6.网关Gateway

一、为什么需要网关&#xff1f; 网关功能&#xff1a; 身份认证和权限校验 服务路由、负载均衡 请求限流 在SpringCloud中网关的实现包括两种&#xff1a; gateway zuul Zuul是基于Servlet的实现&#xff0c;属于阻塞式编程。而SpringCloudGateway则是基于Spring5中提供的Web…