1、硬件平台
MCU:STM32F103
电机:直流减速电机,减速比1:30
编码器:500线光电编码器
通信接口:TTL转USB
2、软件平台
STM32CubeIDE Version 1.7.0
3、STM32资源配置
在STM32CubeIDE中打开.ioc文件进行相应资源的配置。
3.1 系统相关配置
Debug模式设置
RCC配置,根据自己实际的板子上的晶振情况配置,本例只有外部高速晶振,没有低速晶振
3.2 时钟配置
没有低速晶振,只有高速晶振,晶振频率8M,通过分频得到SYSCLK=72M。
3.3 GPIO配置
通常情况下,小车底盘需要用到的GPIO资源包括编码器接口、PWM接口、旋转方向控制接口、通信接口。
本例资源分配如下:
- 编码器接口:分别配置timer 2、3的ch1和ch2
通道1参数设置,通道2相同。
管脚设置,上拉与否要看实际的硬件,未设置中断。
- PWM接口
设置Timer4的通道2、3为PWM输出。
PWM参数设置,时钟频率为72MHz,设置PWM频率为5kHz,分频系数设置为0,即不分频。则counter period 需要设置为 72000000 5000 = 14400 \frac{72000000}{5000}=14400 500072000000=14400;减1的原因是公式 f c l k = A P B x T i m e r c l o c k ( p r e s c a l e r + 1 ) ∗ ( c o u n t e r p e r i o d + 1 ) f_{clk} = \frac{APBx Timer clock}{(prescaler+1)*(counter period+1)} fclk=(prescaler+1)∗(counterperiod+1)APBxTimerclock里面已经加1。其他默认即可。
- 串口通信配置
参数配置(根据实际需要更改波特率,校验位等),其他默认即可。
- GPIO配置
配置电机旋转方向控制管脚(本例对应驱动芯片LN298)每个电机需要两个GPIO,配置为输出。本例分别为PB4、5、6、9。
其他的是一些测试管脚,不赘述了。
关于用STM32CubeIDE来作开发网上的资料非常丰富,本文只作简单地叙述,记录以下开发过程。题外话,STM32CubeIDE用来开发还是很方便的,重要的是免费,不用受MDK license的束缚了。