基于STM32HAL库的平衡小车设计(二)--CubeMX配置说明
项目开源链接
本项目资料完全开源。资料包获取方式:
github: https://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做一些调试,配置为普通的推挽上拉输出。
