目录

1.原理图

2.CubeMx配置

(1)创建工程

(2)配置时钟树

(3)仿真模式选择

(4)TIM2配置为PWM输出模式

(5)定时器TIM3,TIM4设置为编码器模式

(6)蓝牙串口配置

(7)I2C1配置(与MPU6050通信)

​(8)I2C2配置(0.96寸OLED)

(9)MPU6050外部中断引脚配置

(10)NVIC中断配置

3.生成代码


1.原理图

这里最小系统版采取5V供电,这样的话它的3.3V和GND的端口就可以用来给其它模块供电,就不需要在面包板上引出来了,也可采用3.3v供电,同时还要注意最小系统版上的usb接口仅仅用来供电,不具备程序烧录的功能,烧录程序用其侧边的四个sw口。

2.CubeMx配置

由于本人实习期间的一个任务就是学习如何使用CubeMx,所以这次就用CubeMx来进行了程序设计,CubeMx所使用的是HAL库,比起标准库,HAL库封装更加精密,但是在有错时也更难以发现。

(1)创建工程

选择对应的芯片型号,双击就可以创建工程

(2)配置时钟树

点击RCC,开启外部高速时钟源,选择外部晶振作为时钟源

配置时钟树,如下图所示

(3)仿真模式选择

在sys中的Debug选择Serial Wire模式,这个就是我前面提到的程序烧录接口对应的sw模式

(4)TIM2配置为PWM输出模式

定时器2最多可同时产生四路PWM波,这里我们仅仅需要两路即可,可以看到其对应的引脚为PA0,PA1.

点击parameter setting,这里给出pwm波频率计算方法

psc为预分频系数,arr为计数周期,72000000为系统的时钟频率72MHz,我们想要10KHz的pwm波,因此我们可以令psc=0,arr=7199。

然后开启自动重裝载计数值,使得TIM2持续输出PWM波,下面的Pulse为跳变为低电平的计数值,占空比=Pulse/arr。

点击GPIO Setting,设置其输出速率为High

(5)定时器TIM3,TIM4设置为编码器模式

将定时器Combined Channels设置为Encoder Mode,并把PA6,PA7设置为上拉输入Pull-up

把编码器的计数模式改为上升下降沿都计数,这就是网上教学里所说的四分频,如果你要计算小车的实际速度,这个设置在计算时需要考虑进去,但我们这里没有计算速度,而是直接用定时器的计数值来作为控制的参数。

把TIM4也按照同样的方法进行配置。

(6)蓝牙串口配置

串口模式为异步通信,波特率设置为9600,这里我们只用到了单个字符的收发,因此就不采用中断来进行收发了。

(7)I2C1配置(与MPU6050通信)

这是硬件I2C,网上都说stm32的硬件I2C存在Bug,不过我没有遇到,如果你不想使用硬件I2C,也可以不用设置,可以通过软件模拟I2C的通信功能,这个具体的可以去从原子哥的MPU6050的教程,我两个都尝试过,都OK的。

把I2C的速率设置为Fast Mode,i2c本来有3种工作模式,低速、快速、高速,分别对应100kbit/s、400kbit/s、3.4Mbit/s.

 (8)I2C2配置(0.96寸OLED)

I2C的速率设置为Standard Mode

(9)MPU6050外部中断引脚配置

点击PB12引脚,选择外部中断GPIO EXTI12模式

点击GPIO,设置PB12为下降沿触发,因为我们后续会设置MPU6050的中断平信号为低电平。

(10)NVIC中断配置

使系统滴答定时器的抢占优先级高于外部中断

3.生成代码

点击GENERATE CODE生成代码,生成的代码如下图所示 ,这只是各个模块的初始化代码,接下来就是我们自己添加想要实现的功能的代码 。

本文借鉴了这位大佬的文章,因为配置上也改不出多大的花,所以文章会有所相似,如有侵权,请联系我。

HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备_想要亿只独角兽的博客-CSDN博客_基于stm32的两轮平衡车

基于stm32c8t6的两轮平衡小车 第二篇——原理图及CubeMx配置相关推荐

  1. 基于stm32c8t6的两轮平衡小车 第一篇——物料选购

    本人在最近在实习摸鱼期间尝试了一下PID平衡小车,在做的过程中遇到了许多问题,由于我是开始做之前完全是一个小白(都到大四实习期了,还是个小白 ,是不是很搞笑,所以在这里劝大家大学期间还是要好好学习 , ...

  2. 基于32单片机两轮平衡小车控制系统设计

    主控MCU采用STM32F103C8T6单片机,电机驱动模块采用TB6612FNG模块,姿态监测传感器采用MPU6050芯片,蓝牙模块采用HC-05蓝牙模块. 小车的运动分为直立环.速度环和转向环分别 ...

  3. 基于RT-Thread的两轮平衡小车设计

    一.前言 最近参加了RT-Thread官方发起的RT-Robot Car DIY活动,借此机会想总结一些自己本科四年的所学的部分知识. 也可以帮助到那些需要的小伙伴(可以参考我的代码中对RT-Thre ...

  4. ps2摇杆模块控制小车_八个超赞的两轮平衡小车设计,小白最爱

    智能车种类众多,其中两轮平衡车特别受到了工程师的喜爱,整理了8个两轮平衡车的资料,一起看看这个小可爱吧. 1.基于ARM-STM32的两轮自平衡小车 小车直立和方向控制任务都是直接通过控制小车两个电机 ...

  5. 八个超赞的两轮平衡小车设计,小白最爱

    智能车种类众多,其中两轮平衡车特别受到了工程师的喜爱,整理了8个两轮平衡车的资料,一起看看这个小可爱吧. 1.基于ARM-STM32的两轮自平衡小车 小车直立和方向控制任务都是直接通过控制小车两个电机 ...

  6. 平衡小车c语言程序,【全部开源】两轮平衡小车(原理图、PCB、程序源码、BOM等)...

    同网上一般网友制作的平衡小车不一样,这个平衡小车最大的特点就是它的整体很小,PCB面积只有2.5cm*5.0cm,这个可能还没有网友制作的平衡小车的一个电机驱动板大,但是却已经实现了相同的功能.我在器 ...

  7. 毕业论文 | 基于STM32的双轮平衡小车设计(基于Keil5的完整注释版代码工程,原器件清单)

    博主github:https://github.com/MichaelBeechan 博主CSDN:https://blog.csdn.net/u011344545 预告:代码及文档下载 其他参考代码 ...

  8. stm32两轮平衡小车项目详解

    摘要 这个项目是在20年11月初开始的,当时的我很迷茫,本应该去实习的我在线上培训,觉得无聊,便有了自己一人做项目的想法.也没想到这个项目做了将近整整一个月,才差不多做了出来.也是准备做两个项目的,这 ...

  9. 直立代码分析__两轮平衡小车原理

    本文依据网上资源整理而来,适用于初学直立车者. 一.原理 平衡小车是通过两个电机运动下实现小车不倒下直立行走的多功能智能小 车,在外力的推拉下,小车依然保持不倒下.这么一说可能还没有很直观的了解 究竟 ...

最新文章

  1. CVPR2020论文解读:3D Object Detection三维目标检测
  2. centos6.5_64 java 环境变量配置
  3. pytorch 获取模型参数_剑指TensorFlow,PyTorch Hub官方模型库一行代码复现主流模型...
  4. linux学习(3) 关机使命
  5. #pragma once与 #ifndef的区别 (转)
  6. 全端开发——html简介与常用标签
  7. jqgrid 编辑列拿不到值_德云社十大杰出学霸,岳云鹏赫然在列,小岳岳你这是否有点牵强...
  8. 博鳌直击 | 大数据开发的最大障碍是什么?
  9. python中__del__使用方法
  10. mysql8双机热备高可用配置
  11. Windows下搭建IOS开发环境(一)
  12. JDBC连接数据库集
  13. android studio 模拟器 简书,Android Studio的模拟器genymotion
  14. 一键清理电脑垃圾小程序
  15. 比赛推送:ML/NLP/推荐/CV,一大波比赛来袭!
  16. c++11的regex使用
  17. 处理器核(core)、处理器(cpu)区别
  18. 创建Silverlight Bussiness Application时报错的解决
  19. 思科无线AP (AIR-AP1832I-K9)瘦ap 刷 胖ap
  20. 【手机闪存】手机UFS类型闪存GPT(GUID磁盘分区表)初始化

热门文章

  1. 美团招聘计算机视觉算法岗实习生
  2. 拓嘉辰丰:拼多多直播推广的付费模式有哪些?
  3. PyMySQL安装问题解决办法-UnicodeDecodeError:gbk codec cannot decode byte 0xaf
  4. 全国计算机建模三等奖,青春榜样 | 吴昊 : 守得云开见月明
  5. B数和B+数的区别,Mysql为什么使用B+数据结构
  6. osgEarth目标选择
  7. C语言char类型的存储
  8. python统计中文字符_使用 Python 统计中文字符的数量
  9. [PTA]实验3-4 统计字符
  10. Cool Edit Pro