学习制作平衡小车:(二)STM32CubeMX & MDK 工程建立

一、建立stm32CubeMX工程(版本号V5.3.0.0)

1、时钟设置,外部晶振,HCLK=72MHz;

学习制作平衡小车:(二)STM32CubeMX & MDK 工程建立_第1张图片

学习制作平衡小车:(二)STM32CubeMX & MDK 工程建立_第2张图片

2、我用的是网上买的J-linkOB下载器。设置SYS的Debug=Serial Wire,这样使用SWD下载可以多次下载而不用第一次下载后,必须按着Rest键下载;

学习制作平衡小车:(二)STM32CubeMX & MDK 工程建立_第3张图片

3、设置OLED0.96寸液晶屏的I2C1通道(MPU9250模块共用)。Mode=I2C,I2CSpeedMode=FastMode高速模式,I2C ClockSpeed=400000Hz自动设置,其他使用默认设置;

学习制作平衡小车:(二)STM32CubeMX & MDK 工程建立_第4张图片

4、设置用于读取总电源电压的模数ADC转换通道,供电电源分压接口=ADC1_IN0;

学习制作平衡小车:(二)STM32CubeMX & MDK 工程建立_第5张图片

5、设置两个电机的PWM输出通道=TIM2:

通过查阅F103C8T6的sheet,和时钟配置,TIM2使用的APB1时钟频率=72MHz。

学习制作平衡小车:(二)STM32CubeMX & MDK 工程建立_第6张图片

设置TIM2的CH3/CH4作为PWM输出,设置分频系数Prescaler=0(不分频),计数周期Counter Period=7199,则定时器溢出频率,即PWM的周期=72MHz/(0+1)/(7199+1)=10KHz。

学习制作平衡小车:(二)STM32CubeMX & MDK 工程建立_第7张图片

6、设置电机编码器接口:使用TIM3和TIM4的encoder模式。分别选择TIM3/TIM4,设置CombinedChannels=EncoderMOde,编码器的A/B相接口分别接TIM3/TIM4的CH1/CH2通道(选择EncoderMode模式后固定占用CH1/CH2通道):

学习制作平衡小车:(二)STM32CubeMX & MDK 工程建立_第8张图片

分别设置分频系数prescaler=0(不分频)、计数周期CounterPeriod=65535(16位模式最大值)、最后EncoderMode要设置=EncodeModeTI1andTI2,即常说的编码器4倍X4模式;

学习制作平衡小车:(二)STM32CubeMX & MDK 工程建立_第9张图片

7、设置Usart1串行口输出:选择异步模式,其他使用默认(波特率115200);

学习制作平衡小车:(二)STM32CubeMX & MDK 工程建立_第10张图片

8、因STM32F103C8T6的GPIO资源有限,需要设定占用固定资源接口的设备后,再根据剩余GPIO情况设置led、key等其他接口:

设置:LED0(板载GPIO=PC13)、LED1、蜂鸣器BB、TB6612电机驱动模块AIN1/AIN2/BIN1/BIN2接口为GPIO_Output输出模式,并注意设置初始电平;

设置:KEY0、KEY1为GPIO_Input输入模式,注意设置上拉和下拉;

学习制作平衡小车:(二)STM32CubeMX & MDK 工程建立_第11张图片

设置:MPU9250模块的INT接口为外部中断,并使能中断;

9、设置stm32CubeMX工程输出路径、编译程序(MDK ARM V5),然后点击“GENERATE CEDE”生成函数工程。

10、根据分配的GPIO接口,在电板的背面使用飞线焊接,然后在后期逐一测试(必须注意供电电路不接错)。

11、最后确定的各GPIO口分配:

stm32CubeMX的另外一个好处是,可以方便的设置用户标签。我在常用的工程中一般都会设置2个LED和2个KEY,左键点击GPIO口设置模式Mode后,右键点击选择“EnterUserLable”分别设置标签为LED0/LED1/KEY0/KEY1,这样不管GPIO口怎么变化,在MDK工程中直接调用标签号进行操作即可。

注意:在电路设计和焊接时,一定要分清左右电机的Pwm和Encoder通道接口。我这里设置的是右电机Pwm=TIM2_CH3;左电机Pwm=TIM2_CH4;右电机编码器Encoder的A/B相分别接TIM3_CH1/CH2;左电机因为和右电机反向安装,编码器A/B相也是反向连接,分别接的是TIM4_CH2/CH1;后期使用中仍需要进行测试验证;

无线模块预定使用SPI接口,目前暂时用不上,后期可能改为使用蓝牙手机控制,目前可以先不考虑;

电板可以先不用做,只要有各种模块、小车底盘,在前期各种模块的学习整合期间都可以在面包板上完成;

学习制作平衡小车:(二)STM32CubeMX & MDK 工程建立_第12张图片

你可能感兴趣的:(STM32初学,自制平衡小车)