项目开源链接

本项目资料完全开源。资料包获取方式:

githubhttps://github.com/snqx-lqh/ProjectReleasePage

gitee(国内镜像)https://gitee.com/snqx-lqh/ProjectOpenSourceReleasePage

项目属于 32 的编号 B005 ,在发布页中,找到对应项目获取方式。

项目说明

这个项目首先将实现STM32平衡小车的基本平衡功能,使用的是STM32HAL库,并且结合CubeMX开发,完整的教程,希望能够订阅专栏,将分多个博客讲述,内容仅代表个人观点,仅供参考。本系列内容并不会涉及过多理论知识,更多的只是怎么将小车运行起来。

本文内容主要是针对使用的CubeMX相关基础配置做一个说明。完整叙述了创建工程的过程。

CubeMX基础配置

1、建立新工程

在这里插入图片描述

2、搜索STM32F103C8T6,然后双击

在这里插入图片描述

3、选择使能外部高速时钟,不使能外部低速,因为外部低速在本项目没用上,而且那两个脚被我用来当按键输入引脚了。

在这里插入图片描述

4、打开SW调试功能,必须打开,不然单片机只能下载一次

在这里插入图片描述

5、配置时钟,选择外部时钟,然后在最后处写入72MHz,然后回车,会自动配置时钟

在这里插入图片描述

6、填写工程名字,然后选择路径,最后选择使用Keil5打开,版本选择V5,太高了怕其他电脑打不开。

在这里插入图片描述

7、代码生成处,选择如下选项

在这里插入图片描述

8、最后就可以点击右上角的GENERATE CODE,生成代码了。

在这里插入图片描述

以上是基本功能,接下来我们将配置每一个模块。关闭keil工程,继续配置。

电机驱动

首先设置PWM的输出值,使用定时器1的通道1和通道4,分频系数为0,计数系数为7199。分频系数为0的话,计数1个值就是 72Mhz/(0+1)的频率,倒数就是周期1 / ( 72Mhz/(0+1) ))s ,那么计数系数为7199的话,一个PWM定时的周期就是72Mhz/(0+1)/(7199+1),也就是10KHz。占空比的可设置区间就是0~7199。

在这里插入图片描述

然后是控制方向的AIN1、AIN2、BIN1、BIN2,将4个引脚设置成普通的输入输出,并且进行重命名。都设置成推挽上拉输出。

在这里插入图片描述

编码器驱动

把定时器2和定时器4都设置成编码器模式,并且将模式设置成T1T2,这种模式下的编码器能读到的脉冲数最多。

在这里插入图片描述

超声波驱动

ECHO端使用超声波的输入捕获模式。

在这里插入图片描述
还需要设置一个定时器中断,并给一个中断等级。
在这里插入图片描述
TRIG使用单片机的普通IO口输出
在这里插入图片描述

MPU6050驱动(IIC)

mpu6050使用IIC驱动,直接初始化就行了,选择快速模式

在这里插入图片描述

然后还需要一个中断引脚,中断模式,并且配置成上升沿中断。

在这里插入图片描述

并且使能中断

在这里插入图片描述

电源ADC

勾选ADC1,的IN4,其他默认。

在这里插入图片描述
转换周期可以选大一点,不然可能转换的不是很准确

在这里插入图片描述

打开ADC后,时钟可能会乱,需要回到时钟界面调整一下,重新设置输出时钟

在这里插入图片描述

蓝牙接口、串口调试(USART1、USART2、USART3)

都是串口调试,所以配置也都基本一样。

在这里插入图片描述

使能串口中断

在这里插入图片描述

配置一个串口中断的优先级

在这里插入图片描述

串口2和串口3同样的配置,基础配置,不做演示,反正就是打开了一个异步功能,和串口1的第一个配置步骤一样。

在这里插入图片描述

OLED(SPI)

使用的7针OLED,所以直接使用SPI的驱动,A6其实配置了也没用上。

在这里插入图片描述

其他几个脚设置成普通的GPIO输出模式

在这里插入图片描述

按键

按键就直接设置引脚输入为上拉输入就行了

在这里插入图片描述

LED驱动

最小系统板的PC13连接了一个LED灯,可以设置成LED做一些调试,配置为普通的推挽上拉输出。

在这里插入图片描述

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐