【驱动程序】霍尔编码器电机_CubeMX_HAL库

【驱动程序】霍尔编码器电机_CubeMX_HAL库

电机型号:MG310 霍尔编码器电机

驱动模块:L298N

接线

在这里插入图片描述

注:

  • L298N 12V接线柱位置可以接50V~5V
  • 当跳线帽接入时,5V接线柱为5V输出,可以给驱动板供电
  • 当跳线帽拔出时,5V接线柱为5V输入

CubeMX 配置

  • PB4(TIM3-CH1) 和 PB5(TIM3-CH2) 为PWM输出模式
  • PB3(TIM2-CH2) 和 PA15(TIM2-CH1) 为输入捕获模式 NVIC中断使能
  • TIM4设为定时中断 NVIC中断使能

注:芯片型号为stm32f103C8T6,根据芯片型号不同,配置的时钟通道的管脚也不同

共两个代码文件

  1. encoder_motor.c
  2. encoder_motor.h

encoder_motor.c

#include "encoder_motor.h"/*
PWM输出
PB5-TIM3-CH2
PB4-TIM3-CH1
*/
//占空比设定 最大值为重装载值
void Encoder_PWM_PB5(int n)
{TIM3->CCR2 = n;
}
void Encoder_PWM_PB4(int n)
{TIM3->CCR1 = n;
}/*
脉冲捕获
PB3-TIM2-CH2
PA15-TIM2-CH1
*/
int Encoder_Num_Pulse = 0; // 脉冲记数值
int Encoder_Speed = 0; // 速度值//脉冲捕获
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{if(htim->Instance == TIM2){Encoder_Num_Pulse++;}
}//速度检测,放在定时中断里
int Encoder_Chack(void)
{int a = Encoder_Num_Pulse;Encoder_Num_Pulse = 0;return a;
}

encoder_motor.h

#ifndef _ENCODER_MOTOR_H_
#define _ENCODER_MOTOR_H_#include "my_core.h"
void Encoder_PWM_PB4(int n);
void Encoder_PWM_PB5(int n);extern int Encoder_Num_Pulse; // 脉冲记数值
extern int Encoder_Speed; // 速度值
int Encoder_Chack(void);
#endif

代码使用说明

Encoder_Chack();放在定时中断里使用

stm32f1xx_it.c

/*** @brief This function handles TIM4 global interrupt.*/
void TIM4_IRQHandler(void)
{/* USER CODE BEGIN TIM4_IRQn 0 */Encoder_Speed = Encoder_Chack();/* USER CODE END TIM4_IRQn 0 */HAL_TIM_IRQHandler(&htim4);/* USER CODE BEGIN TIM4_IRQn 1 *//* USER CODE END TIM4_IRQn 1 */
}

开启PWM输出、捕获中断、定时中断

main.c

int main()
{//...HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);//开启PWM通道HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2);//开启PWM通道HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1);//开启捕获中断HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_2);//开启捕获中断HAL_TIM_Base_Start_IT(&htim4);//开启定时中断while(1){//...}
}

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

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

相关文章

单片机主控的基本电路

论文 1.复位电路 2.启动模式设置接口 3.VBAT供电接口 4.MCU 基本电路

昇思25天学习打卡营第30天 | MindNLP ChatGLM-6B StreamChat

今天是第30天,学习了MindNLP ChatGLM-6B StreamChat。 今天是参加打卡活动的最后一天,经过这些日子的测试,昇思MindSpore效果还是不错的。 ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,具有62亿参数,基于 …

Blender4.2版本正式上线,新版本的5个主要功能!

​Blender刚刚推出了备受瞩目的 Blender 4.2 版本,这款软件专为那些在视觉特效、动画制作、游戏开发和可视化设计领域工作的艺术家们量身打造。作为最新的长期稳定更新,Blender 4.2 不仅稳定可靠,还引入了备受期待的“Eevee Next”实时渲染引…

unity渲染人物模型透明度问题

问题1:有独立的手和衣服的模型,但最终只渲染出来半透明衣服 问题2:透明度贴图是正确的但显示却不正确 这上面两个模型的问题都是因为人物模型是一个完整的,为啥有些地方可以正常显示,有些地方透明度却有问题。 其中…

嵌入式香橙派人工智能AI开发板详细操作与远程聊天实现

大家好,今天给大分享一个OrangePi AIpro(20T)采用昇腾作为主控芯片的开发板,开箱以及对应功能的详细实现。 第一:板子基本介绍 接通电源给对应的开发板上电,观察其中的现象,如下: 注…

Vue 组件插槽 slot 简单例子

https://andi.cn/page/621582.html

GZ032 信息安全管理与评估赛项参考答案-模块1任务二11-20

GZ032 信息安全管理与评估赛项参考答案-模块1任务二 后面的题可能有的地方没有验证但是步骤都对,第13个小题没有做跳过去了等下一期或者最后在做 文章目录 GZ032 信息安全管理与评估赛项参考答案-模块1任务二11.总公司和分公司今年进行IPv6试点,要求总公…

TikTok内嵌跨境商城全开源_搭建教程/前端uniapp+后端源码

多语言跨境电商外贸商城 TikTok内嵌商城,商家入驻一键铺货一键提货 全开源完美运营,接在tiktok里面的商城内嵌,也可单独分开出来当独立站运营 二十一种语言,可以做很多国家的市场,支持商家入驻,多店铺等等…

华为“铁三角模式”在数据类项目中的应用和价值

引言:随着信息技术的飞速发展,企业纷纷踏上数字化转型的道路,希望通过数据分析和智能决策来提升企业竞争力。在这一过程中,数据类项目成为关键,它们旨在构建高效的数据治理和分析平台,为企业决策提供有力支…

【Git远程操作】克隆远程仓库 https协议 | ssh协议

目录 前言 克隆远程仓库https协议 克隆远程仓库ssh协议 前言 这四个都是Git给我们提供的数据传输的协议,最常使用的还是https和ssh协议。本篇主要介绍还是这两种协议。 ssh协议:使用的公钥加密和公钥登录的机制(体现的是实用性和安全性&am…

Linux网络——TcpServer

一、UDP 与 TCP 在现实生活中,Udp 类似于发传单,Tcp 类似于邮局的挂号信服务。 1.1 UDP(用户数据报协议) 无连接:发放传单时,你不需要提前和接受传单的人建立联系,直接把传单发出去。不可靠&…

ffmpeg ffplay.c 源码分析

1 ffplay.c的意义 ffplay.c是FFmpeg源码⾃带的播放器,调⽤FFmpeg和SDL API实现⼀个⾮常有⽤的播放器。 例如哔哩哔哩著名开源项⽬ijkplayer也是基于ffplay.c进⾏⼆次开发。 ffplay实现了播放器的主体功能,掌握其原理对于我们独⽴开发播放器⾮常有帮助…

1. LeetCode-数组和字符串

1.数组简介 1.1 集合、列表和数组 集合 集合定义:由一个或多个确定的元素所构成的整体。 集合的特性: 首先,集合里的元素类型不一定相同。 你可以将商品看作一个集合,也可以将整个商店看作一个集合,这个商店中有人…

如何学习Hadoop:糙快猛的大数据之路(利用GPT 学习)

目录 引言Hadoop是什么?学习Hadoop的"糙快猛"之道1. 不要追求完美,先动手再说2. 从简单的MapReduce开始3. 利用大模型加速学习4. 循序渐进,建立知识体系 构建您的Hadoop技能树1. 夯实基础:Linux和Java2. 深入理解HDFS3.…

C语言 函数

1. 函数是什么? 数学中我们常见到函数的概念。维基百科中对函数的定义:子序程 在计算机科学中,子程序是一个大型程序中的某部分代码,有一个或者多个语句块组成。它负责完成某项特定任务,而且相较于其他代码&#xff…

机械学习—零基础学习日志(高数05——函数概念与特性)

零基础为了学人工智能,真的开始复习高数 本小节讲解隐函数,有点神奇,我竟然完全没有隐函数记忆了。 隐函数 隐函数,我个人通俗理解就是,在复杂的环境里,发现纯净天地。例如,在外太空的某个大陆…

【electron】 快速启动electron 应用

学无止境: 最近在搞electron项目,最重要的是总结 ,写下来总不会忘记,也希望给大家参考一下,有不对的地方希望大家多指点。 快速启动electron 应用 1 克隆示例项目的仓库 git clone https://github.com/electron/ele…

Python批量Word转PDF神器,让你从此轻松转换文档!

大家好!今天我们来聊聊工作中可能遇到的一个“头大”问题:如何批量将Word文档转成PDF?是不是光听听都感觉头皮发麻? 不用担心,今天我们就来分享一个Python小技巧,让你在批量转换文档时再也不用抓狂&#x…

实验06 持续集成测试

知识点 集成测试定义 集成测试是将多个单元组合起来形成更大的单元,并测试它们是否能协同工作形成子系统。一种旨在暴露单元接口之间、组件/系统间交互或协同工作时所存在的缺陷的测试。 集成测试关注的问题 模块间数据传递是否正确。一个模块的功能是否影响另一…

python如何调用matlab python package库matlab转python安装包调用使用简单示例

说明(废话) 之前没有进行python调用过matlab,前面用matlab engine for python可以通过调用matlab的源码文件的形式可以调用工程,但是这又有一个问题,就是在运行的时候必须提供python和matlab的全部源码 该文章是通过matlab源码转python pack…