目录

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. 网络营销外包——改善企业网站排名现状网络营销外包少不了
  2. JS关于提交的RSA加密算法
  3. 深度学习在CTR预估的应用
  4. [Windows子系统] Ubuntu18.04安装及换源
  5. SpringBoot中将thymeleaf升级到3.0或以上版本
  6. spark standalone集群安装及spark on yarn
  7. spring ioc原理解析
  8. FZU - 2218 Simple String Problem(状压dp)
  9. 【最小生成树】路线规划(nowcoder 217603)
  10. gvim 安装 taglist
  11. 用php实现一个简易的web表单生成器,网络编程PHP Web表单生成器案例分析
  12. Grunt上手指南(转)
  13. 对象序列化时候无法创建类似如此(king:astar)的元素名
  14. 怎样快速的学习微信小程序
  15. python建模概述
  16. 华为数通设备常用命令大全
  17. linux下安装五笔输入法,Linux五笔输入法:小小输入法安装配置
  18. 特征工程之特征选择(3)----F检验和互信息法
  19. html5清新文艺,清新文艺的短句
  20. java 句柄无效_Java开发网 - java.io.IOException: 句柄无效???

热门文章

  1. thinker board s debian系统安装配置
  2. JAVA核心知识点--HttpClient获取302响应中的Location头信息
  3. 【学习笔记】常见测试类型测试方法
  4. discuz gbk php在utf8,Discuz!3.4论坛从GBK转换成UTF8的成功经验
  5. AQS是什么?都是怎么用的?
  6. 关于java中的反射
  7. 并发量与qps的区别和联系,以及系统吞吐量的介绍
  8. Python3 图片文字识别翻译——调用百度AI、百度翻译和有道翻译的API
  9. Python开源指南
  10. html5绘制图形幸运大转盘,微信小程序利用canvas 绘制幸运大转盘功能