机器人工程系列文章目录
这里罗列了系列文章链接
概念总述
STM入门教学
前言
写点入门,嗯,感觉一对一教学效率很低,所以打算写篇STM32的入门教学,最好是傻瓜式教学我想。
咳咳,最近出差,手边没实物,实物演示等我回实验室慢慢更
关于嵌入式
展开一份工作前,最好对一份工作有着充分的价值认识,从科研人员角度出发,STM32最大程度上解决了复杂系统的控制硬件实现问题,丰富的控制接口可以应对机器人的大部分底层通讯与控制任务。
关于控制系统,可以参考下这篇文章。
而对于这样一个舵机系统,STM32则可以帮助您完成基本的数据通讯、位置传感与电机控制。
留意在机器人中,stm32的重点功能体现在
- 信号的采集(ADC电压测量)
- 信号的输出(PWM脉宽输出)
- 数据的交互(USART串口通讯)
- 定时任务的循环(TIMER定时器循环)
以上的方法通常不唯一,正所谓草木金石皆可为剑,但入门的话可以采取最简单的办法理解(括号里的实验)。
知识准备
食用本篇教程之前建议先有以下基础
- 使用过Arduino,并了解Arduino基本功能(DigitalWrite, DigitalRead, AnalogWrite, AnalogRead, Serial, Timer等等)。
- C/C++编程学习,多文件编译等等。
- 最好阅读过《微机原理》、《计算机原理》、《模拟电路》、《数字电路》等,如果觉得上述太难我推荐阅读《编码》(简单又囊括全部),当然你可以边学stm32边补充上述知识。
硬件准备
首先会需要手边有这几个东西,配置我按穷鬼设备算了(那些大型号的没什么用,买来只会吃灰),约摸50块就可以满足大部分的学习需求。
设备 | 价格 | 用途 |
---|---|---|
STM32F411CEU6核心板 | 20元 | 主控板呢 |
ST-Link V2 | 20元 | 刷程序与调试 |
CH340模块 | 5元 | 实现串口通讯 |
STM32F411CEU6核心板,体积小巧,便宜且功能强,可以胜任大部分初期学习的工作,你可以将它安装在面包板上,并快速完成飞线连接,搭建属于你自己的第一份嵌入式系统(注意很多F4有typeC接口,但不能接到提供高电压的TypeC设备中,会炸的)。
ST-Link,ST公司官方提供的嵌入式开发调试器,调试程序完全足够使用。
CH340模块,一种简易的USART转USB通讯的设备,你可以通过两根杜邦线连接到单片机上,并在电脑上使用XCOM软件观察到你的单片机和你说的悄悄话。
以上三件是必需品,嗯,以及面包板与若干杜邦线。
如果是富哥的话,可以考虑入一些万用表,便携示波器之类的,测试电路bug会更好些。
大学牲可以就近找找实验室,大部分的课题组应该很欢迎本科生入组学习。
还有一些电位计啊,舵机啊,电机啊,oled之类的电子元件,看个人喜好与工程需求,可以酌情购买并准备调试。
软件准备
编写stm32程序需要安装如下软件
设备 | 用途 |
---|---|
Keil5 MDK-Arm | 编译程序 |
ST-CubeMX | 配置stm32底层 |
XCOM | 观看串口数据 |
其中keil5是需要正版购买才能用的,这里也鼓励大家多支持正版
当然你的电脑大概率还需要补充这两个驱动
CH340设备驱动
STSW-LINK009
STM32 启动!
现在是一周后,你现在面前有着安装完各个软件的电脑,stm32开发板,和茫然不知所措的你。
我们先来把stm32和各个设备的连线做好。
硬件接线
使用ST-link进行系统调试,F4核心板屁股上有GND、CLK、DIO和3V3三根线,分别接入STLink的GND、SWCLK、SWDIO和3V3的接口中,其他的线不用管。
STM32F4 | STLINK | 功能 |
---|---|---|
3V3 | 3V3 | 供能 |
DIO | SWDIO | 写入数据线 |
CLK | SWCLK | 写入时钟线 |
GND | GND | 共地 |
接入电脑后,你的设备管理器中将会多出
使用CH340进行串口通讯,将RX接入PA9,TX接入PA10,记得接一下地线。
STM32F4 | CH340 | 功能 |
---|---|---|
3V3 | 3V3 | 建议别接 |
PA9 | RX | 通讯线 |
PA10 | TX | 通讯线 |
GND | GND | 共地 |
接入电脑后,你的设备管理器中将会多出
整体的连接的效果大概是这样
cubemx 启动!
我们先选择芯片,这里大概需要登录并下载很长时间。
输入我们的核心板芯片型号STM32F411CEU6,并双击选中该芯片创建工程。
在左侧categories中选择RCC,并为HSE与LSE选择Crystal/Ceramic Resonator,你会发现右侧的芯片引脚上自动变绿了四个引脚(这个功能是开启了芯片的外部时钟输入功能,提供更加精准的时钟源。)
切换到SYS中,将Debug设置为Serial Wire。这个功能将芯片的PA13与PA14引脚设置为SWD调试接口,并将与STLink进行连接
切换到Clock Configuration界面,注意下边的HCLK将是我们芯片的运行主时钟速度,数值越高芯片运行速度越快,默认应该是16,这里我们将其设置为最大值100,并回车,软件将自动寻找时钟分配方案
选择Project Manager,设置好项目名称,项目地址(注意不要在中文目录或者奇怪字符的目录下,否则生成不成功),并设置好工具链MDK-ARM
转到Code Generator中,勾选Copy only the necessary library files和Generate peripheral initialization as a pair of ‘.c/.h’ files per peripheral
至此cubeMX设置成功,点击GENERATE CODE,我们将转战Keil5。
keil5 启动!
如果是刚刚下载的keil5,大概库下载器会给你下载很久的库文件,可以挂个梯子,下的更快一些
keil5的界面比较复古,我们一点点来,首先点击编译设置按钮
我们为程序选择编译器V6,速度更快
点击部分编译或全部编译,最终现实0 Error的时候表示编译成功
这个时候点击下载按钮,你的STLink大概率会兴奋地闪烁起来,虽然你并不知道具体发生了什么事情,但切切实实迈入了嵌入式大门的第一步。
下一章我将简单介绍串口与定时器的功能