当前位置: 首页 > news >正文

基于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做一些调试,配置为普通的推挽上拉输出。

http://www.jsqmd.com/news/794451/

相关文章:

  • CANN/ops-nn自适应层归一化算子
  • 手把手教你用9款AI工具,30分钟生成20万字计算机论文并自动匹配代码 - 麟书学长
  • 革命性云原生运维平台SREWorks:一站式解决企业运维难题
  • NCM解密工具终极指南:3步解锁网易云音乐加密文件
  • CANN Ascend C uint32转bfloat16函数
  • 5分钟告别百度网盘提取码烦恼:智能获取工具全解析
  • GE模型加载卸载API
  • 终极指南:3步解决Dell G15笔记本过热问题,开源温度控制中心完全解析
  • XUnity.AutoTranslator完全指南:轻松实现Unity游戏实时翻译的终极方案
  • CANN/asc-devkit Reset函数说明
  • CANN/Ascend C SetSkipMsg API
  • 见素抱朴的 SAP UI5 开发之道, 从「绝圣弃智」到少代码、少炫技、少内耗的前端工程
  • Seraphine:英雄联盟玩家的智能数据助手,三步解锁游戏信息优势
  • BepInEx 6.0.0插件框架稳定性修复:从崩溃现象到IL2CPP签名耗尽问题的深度解析
  • CANN/asc-devkit异或运算API文档
  • IPBan快速入门:一键安装配置,立即阻止僵尸网络入侵
  • 如何为Unity游戏添加实时多语言翻译:XUnity.AutoTranslator终极指南
  • 长期项目使用Taotoken按Token计费模式带来的成本优化体感
  • Yeti社区插件生态解析:如何利用现有资源快速扩展平台功能
  • 【审计专栏】招投标领域人工智能审计——3 算法篇 招投标围标串标行为、检测模型与评估体系 第一部分
  • XUnity.AutoTranslator完整指南:如何为Unity游戏添加智能实时翻译功能
  • 3分钟极速获取百度网盘提取码:开源工具完整使用教程
  • Godot 3 Demos终极指南:从零开始构建你的第一个2D游戏 [特殊字符]
  • CANN昇腾算子开发套件
  • CANN/ops-nn快速层归一化算子
  • CANN/asc-devkit绝对值函数API文档
  • 解放双手,回归乐趣:《崩坏:星穹铁道》智能自动化助手完全指南
  • face-recognition.js 模型训练与保存:构建可复用的人脸识别系统
  • 3步快速部署GitHub中文化插件:告别英文界面的烦恼
  • 我怀疑我电脑里有感染性病毒