当前位置: 首页 > news >正文

stm32 HAL库 4096线ABZ编码器

@[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.lryc.cn/news/274598.html

相关文章:

  • Java爬虫之Jsoup
  • 如何在 C# 12 中使用主构造函数
  • Zookeeper之Java客户端实战
  • 将文本文件导入Oracle数据库的简便方法:SQL Loader Express
  • element-ui table-自定义表格某列的表头样式或者功能
  • Android 13.0 SystemUI状态栏居中显示时间和修改时间显示样式
  • 讲解eureca和nacus的区别
  • python中parsel模块的css解析
  • Oracle OCP怎么样线上考试呢
  • 如何让自己的写的程序在阿里云一直运行
  • 【计算机图形学】NAP: Neural 3D Articulation Prior
  • 知识付费平台搭建?找明理信息科技,专业且高效
  • CentOS7部署Kafka
  • JS的防抖和节流
  • 互联网加竞赛 基于人工智能的图像分类算法研究与实现 - 深度学习卷积神经网络图像分类
  • pip安装报错SSL
  • 手机视频监控客户端APP如何实现跨安卓、苹果和windows平台,并满足不同人的使用习惯
  • 从写下第1个脚本到年薪40W,我的自动化测试心路历程
  • Vue CLI组件通信
  • C语言编译器(C语言编程软件)完全攻略(第九部分:VS2019使用教程(使用VS2019编写C语言程序))
  • 走向云原生 破局数字化
  • spring常用注解(三)springbean类
  • qiankun微服务
  • 文件夹重命名方法:提高效率减少错误,中英文批量翻译文件夹名称
  • 【PHP】where和whereOr一起复杂查询示例
  • Mysql 动态链接库配置步骤+ 完成封装init和close接口
  • 哈希一致性算法
  • 基于SpringBoot的在线考试系统绿色
  • 设计模式:原型模式
  • Qt5+VS2013兼容XP方法