HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备

这篇具有很好参考价值的文章主要介绍了HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系列文章目录

编码电机测速

HAL库版 0.96'OLED的使用

HAL库版STM32双轮自平衡车(一) ———代码思路和PID的简单介绍

HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备

HAL库版STM32双轮自平衡车(三) ———代码精讲

HAL库版STM32双轮自平衡车(四) ———— 原理图以及PCB绘制

HAL库版STM32双轮自平衡车(五) ———— 调参

完整工程——> 闲鱼搜店铺“黄金独角兽的小店”

完整工程以及学习资料(设置了收费望理解)https://h5.m.goofish.com/item?id=681989715310&ut_sk=1.X2hUgNjQh0QDAMrgZaxtwchr_21407387_1684499716074.copy.detail.681989715310.2209260974794&forceFlush=1&ownerId=9db66f5694ab477fc49456657355a970&un=b92a505ad4316dfe46071105c2583afc&share_crt_v=1&un_site=77&spm=a2159r.13376460.0.0&sp_abtk=common_xianyu_commonInfo&sp_tk=UndhbWRvMlUwNzc%3D&cpp=1&shareurl=true&short_name=h.UEhbs71&bxsign=scd2vrEz8ec8281p2gBEWXb_hK1esb_MFtgLX0U9fHSxWHWEUxw2KDwuHFLf7dA0QUH1VGbvJXD3BKyKhMRbpxqeMktn1Tlm-MUD_wJhhrmkLdpYFWkc1t0KApMVQN8nj5NZvwrV_KDRe53CoD_5Yi2wg&tk=Rwamdo2U077&app=chrome


目录

系列文章目录

前言

一、物料准备

二、原理图(接线) 

三、CubeMX的配置

3.1.  时钟树的配置

3.2.  SYS配置 

3.3.  PWM配置

3.4.  定时器编码器模式配置

3.5.  MPU6050配置 (I2C 1)

3.6.  OLED配置(I2C 2)

3.7.  MPU6050引脚中断 配置

3.8.  GPIO配置(AIN,BIN)

3.9.  NVIC配置(最为关键的一步) 

3.10.  最终引脚配置图 

总结


视频展示:

STM32自平衡小车


前言

上一篇文章介绍了一些PID的基础知识以及阐明了代码编写的思路,看明白了其实就会觉得平衡小车的制作并没有想象中那么难。那么接下来本文将逐个介绍小车的物料准备、原理图、CubeMX的配置,以及在制作时遇到的一些“大坑”。下一篇文章继续代码分析,PID调参过程的阐述。


一、物料准备

  • stm32f103c8t6最小系统板
  • 12V锂电池
  • DC-DC可调降压模块LM2596S(想要不麻烦可以凑活着用,想要更好的可以去B站看看“工科男孙老师”)
  • 0.96寸OLED(IIC接口)
  • 两路直流电机驱动(用的是DRV8848而不是TB6612,因为TB6612已经停产,价格飞升性价比不高,两者代码相通)
  • 带霍尔编码器的直流减速电机(GM25-370,其他型号亦可)
  • mpu6050
  • 小车车架,轮子等

二、原理图(接线) 

这里仅展示小车最核心的接线,DC-DC降压稳压部分详见我在立创上的开源,但如果是用LM2596S模块就是12V输入,输出3.3V给stm32以及各模块供电。

HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备
电机驱动以及编码器

    

HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备
OLED
HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备
MPU6050

三、CubeMX的配置

3.1.  时钟树的配置

(1)点击RCC,开启HSE,并选择RC或晶体作为时钟源

HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备

(2)配置时钟树,最终为右侧显示

HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备


3.2.  SYS配置 

点击SYS,选择Debug为SW模式,这个主要是烧录调试需要

HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备


3.3.  PWM配置

(1)在TIM2模式选项中配置的通道1,2为PWM模式,其中通道1为PWMA,通道2为PWMB

HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备

(2)要设置PWM频率为10KHz,通过HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备,可以得到预分频系数为0,计时周期为7199,并开启自动重装载值

HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备

(3) 点击 GPIO Settings ,将其设置为复用推挽模式,高速输出

HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备


3.4.  定时器编码器模式配置

将TIM3和TIM4都配置成编码器模式,这里仅展示TIM3的相关配置

(1)在TIM3模式选项中将其配置为编码器模式

HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备

 (2)设置编码器模式为上升沿下降沿都计数,即四分频。其他设置按默认就好。

HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备

  (3) 点击 GPIO Settings ,将其设置为引脚上拉,大多数编码器都是自带上拉电阻的,这一步只是以防万一。

HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备


3.5.  MPU6050配置 (I2C 1)

选择I2C1模式为I2C,并配置为高速模式

HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备


3.6.  OLED配置(I2C 2)

选择I2C2模式为I2C,并配置为标准模式

HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备


3.7.  MPU6050引脚中断 配置

(1)将PB12配置为外部引脚中断模式

HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备

(2)点击System Core 中的GPIO,配置PB12的外部中断为下降沿触发,并设置为上拉模式(因为在mpu6050.c中对mpu进行了初始化设置,具体设置是->使能了INT中断以及设置中断信号低电平有效,设置上拉模式即可以防止外部干扰,还可以在mpu6050采集完数据后产生下降沿脉冲)

HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备

这里也给出mpu6050.c中对mpu进行的初始化设置

HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备


3.8.  GPIO配置(AIN,BIN)

这里要对驱动模块中的AIN1,AIN2,BIN1,BIN2进行配置,AIN,BIN是控制电机正反转的。

其中stm32的PA2, PA3, PA4, PA5分别对应AIN1,AIN2,BIN1,BIN2。它们的设置一致,这里也只给出AIN1(PA2)的相关配置,其他的不再赘述。

(1)将PA2配置为引脚输出模式

HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备

(2)点击System Core 中的GPIO,配置为:初始为高电平(也可以设置为低电平),推挽输出,无上下拉,高速传输

HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备


3.9.  NVIC配置(最为关键的一步) 

(1) 点击System Core 中的NVIC, 将优先级分组设置为:2 bit 分给抢占优先级,2 bit 分给响应优先级(子优先级)

HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备

(2) 使能外部中断(EXTI12)并设置系统滴答定时器(systick)的抢占优先级高于外部中断的优先级,这里便是我所说的“大坑”之一,如果不这样设置,程序就会卡死在外部中断    下面探究一下具体原因:

首先在结合生成的工程,来看看Systick的时钟配置以及工作流程,systick首先在HAL_Init()函数中被提到,接下来跟进去看看。在HAL_Init()中调用了 HAL_InitTick ,之后再到        HAL_InitTick  中查看说明,下图红框框起部分极为重要.

这段英文解释是说,外设中断进程调用HAL_Delay的时候,要特别注意中断的优先级问题,如果systick的中断优先级低于外设中断优先级,会导致一直在外设中断中阻塞,如果外设中调用了HAL_Delay(),一定要保证Systick的中断优先级高于外设中断优先级。
 

HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备

 然而我们的EXTI外部中断程序中哪里用到了HAL_Delay()?在读取mpu6050采集的数据中就有用到。

其实查看mpu6050的驱动程序(dmp)不难发现有很多地方用到了HAL_Delay(),例如在mpu_init()函数中就有用到

HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备

HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备


3.10.  最终引脚配置图 

HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备

完整工程——> 小黄鱼搜店铺“黄金独角兽的小店”


总结

以上就是系列文章第二篇要讲的内容,本文介绍了CubeMX的相关配置,物料,接线以及其中要注意的“大坑”,之后也就是下一篇文章重点介绍HAL库版代码的编写以及实现。

码字不易,希望喜欢的小伙伴别忘了点赞+收藏+关注,你们的肯定就是我创作的动力


欢迎大家积极交流,本文未经允许谢绝转载!!!
 文章来源地址https://www.toymoban.com/news/detail-452320.html

到了这里,关于HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 用STM32CubeMX配置输出PWM信号控制多路舵机(HAL)

    (1)编程平台:Keil5 (2)CubeMX (1)本此使用最小核心板STM32F103C8T6为例 (2)一个舵机:SG90或者MG996等均可 (3)ST-link 下载器 (4)杜邦线若干         舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度

    2023年04月09日
    浏览(45)
  • STM32CubeMX配置STM32G031多通道ADC + DMA采集(HAL库开发)

     时钟配置HSI主频配置64M  勾选打开8个通道的ADC  使能连续转换模式  添加DMA  DMA模式选择循环模式  使能DMA连续请求 采样时间配置160.5 转换次数为8  配置好8次转换的顺序  配置好串口,选择异步模式 配置好需要的开发环境并获取代码  修改main.c 串口重定向  串口重定向

    2024年02月08日
    浏览(58)
  • STM32CubeMx配置ADC(多通道采集+DMA读取数据)(HAL库开发)

    目录 1、函数配置过程(这是标准库配置过程): 2、STM32CubeMx配置过程  3、main函数源文件 采集5路ADC数据,并用串口printf()函数打印出来。 实验现象:  ADC转换的初始条件: 1、使能 2、触发源条件完成(这个需要自己配置)利用:HAL_ADC_Start_DMA()函数; ADC中HAL开发优势就是,

    2023年04月08日
    浏览(80)
  • STM32CubeMX配置HAL库实现SPI-DMA的递归调用

    核心: STM32F407ZET6   外设ADC: ADS1258   数量:3个   ※ 核心与3个ADC使用SPI总线 “一主多从” 方式连接,PCB布线的方式与下图一致。 ※ 在电路板上STM32与三个ADS1258在同一直线上分布,STM32在一端,三个ADC依次排布。 ※ 离STM32最远ADC的DRDY硬件管脚与STM32的EXTI line4 interrupt连接

    2024年02月15日
    浏览(51)
  • 【STM32】cubeMX配置HAL库驱动L298N控制直流有刷电机

    目录 1.电机为什么需要驱动板呢?为什么不能用控制器直接控制电机呢? 2.H桥电路介绍 3.L298N原理介绍 4.实物接线图 5.CUBEMX配置 6.代码 7. 演示视频 L298N是常用来驱动小型直流有刷电机(两个)和步进电机(一个)的电机驱动板,其电路原理就是两个H桥电路,控制原理是使用

    2024年02月16日
    浏览(52)
  • 蓝牙小车(基于stm32f103c8t6/HAL库/CubeMX/超详细,包含代码讲解和原理图)

    一、小车1.0——基本蓝牙小车(仅蓝牙遥控小车运动方向,本篇) 二、小车2.0——蓝牙小车PLUS(可以蓝牙控制方向+蓝牙直接调节车速) 三、小车3.0——避障小车(超声波+舵机云台) 四、小车4.0——无线手柄方向感知操控小车(mpu6050+双蓝牙透传) 五、双轮自平衡小车(HAL库版

    2023年04月09日
    浏览(54)
  • STM32 HAL库 CubeMX配置 定时器学习 F103C8T6

    开发板: STM32F103C8T6最小系统板 编译环境: Keil5 MDK 辅助软件: STM32 CubeMX 课程教学: 基于正点原子HAL库学习教程 其余配件: 江科大STM32配件包 和 示波器一台 备注:  因为这块开发板没有基本定时器,所以本文也 没有基本定时器的内容             本文1.3和2.1部分的

    2024年04月26日
    浏览(44)
  • 【11】STM32·HAL库开发-STM32CubeMX简介、安装 | 新建STM32CubeMX工程步骤

      STM32CubeMX是ST开发的一款图形配置工具,可通过配置自动生成 初始化代码 (并不包括逻辑代码)。以下是STM32CubeMX官方宣传图片,适用于Windows和macOS系统,用于生成初始化代码,一个图形配置工具,搭配不同系列的STM32Cube固件包,即可支持不同系列的STM32芯片,初始化代码

    2024年02月17日
    浏览(64)
  • [CubeMX项目]基于STM32的平衡小车(硬件设计)

    一直以来我都想在本科毕业前完成一个电机相关的实验,之前看了网上比较火热的自平衡莱洛三角形项目后,决心先做一个类似的小项目。因此,我通过学习大量前辈的项目案例,完成了该项目。 本项目的特点是:在需要通信的部分,全部采用STM32自带的硬件接口,使用自己

    2024年02月03日
    浏览(46)
  • STM32 HAL库 STM32CubeMx -- 外部中断

    中断,是指处理机处理程序运行中出现的紧急事件的整个过程。程序运行过程中,系统外部、系统内部或者现行程序本身若出现紧急事件,处理机立即中止现行程序的运行,自动转入相应的处理程序(中断服务程序),待处理完后,再返回原来的程序运行,这整个过程称为程序

    2024年02月08日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包