STM32(M4)入门指南:概览、Keil5安装与模板创建——嵌入式开发宝典(价值高达3万)
前言:本教程内容源自信盈达教培资料,价值3w,使用的是信盈达的405开发版,涵盖面很广,流程清晰,学完保证能从新手入门到小高手,软件方面可以无基础学习,硬件学习支持两种模式:一是可以自己买一个405的核心板直接连杜邦线到模块就可以学习了,本教程循环递进,一次不会使用到很多模块,可以不用担心杜邦线太乱,所以不用使用面包板。二:需要一点硬件基础,根据原理图画板,如果很多人不会后续会考虑单独出一篇嘉立创的画图教程。教程配套原理图与接线配置将在 GPIO 章节呈现。有什么疑问多评论交流。
一、嵌入式系统的概念
嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪的专用计算机系统,严格满足功能、可靠性、成本、体积、功耗等要求。
二、常见处理器
嵌入式领域处理器多样,按性能与应用场景可分为:
三、ARM 及其处理器简介
1. ARM 简介
ARM(Advanced RISC Machine)是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、低功耗的 RISC(精简指令集计算机)处理器。ARM 公司只负责处理器的设计,并不生产芯片,而是将处理器的技术授权给世界上许多半导体公司,如 ST(意法半导体)、三星、高通等,并为这些公司提供技术服务。凡是采用 ARM 内核设计的芯片均可称为 ARM 处理器。
2. 典型 ARM 处理器系列
ARM7 系列
ARM7 系列是早期的 ARM 处理器,具有低功耗、低成本的特点,适用于对性能要求不高的嵌入式系统。例如,一些早期的电子词典、简单的工业控制器等可能会使用 ARM7 处理器。
ARM9 系列
ARM9 系列在性能上比 ARM7 有了显著提升,支持更多的功能和更高的时钟频率。它常用于工业控制、网络设备等领域,如一些小型的网络路由器可能会采用 ARM9 处理器。
ARM11 系列
ARM11 系列进一步提高了性能和功能,在智能手机、平板电脑等移动设备的早期发展阶段有较多应用。例如,一些早期的 Android 手机就使用了 ARM11 处理器。
Cortex – A 系列
Cortex – A 系列主要用于高性能应用,如智能手机、平板电脑、智能电视等。以 Cortex – A8 和 Cortex – A9 为例,它们具有较高的主频和强大的计算能力,可以运行复杂的操作系统和应用程序。
Cortex – R 系列
Cortex – R 系列侧重于实时应用,如汽车电子、工业控制等对实时性要求很高的领域。例如,在汽车的发动机控制系统中,需要实时处理各种传感器的数据,并及时做出响应,Cortex – R4 处理器可以满足这种实时性要求。
Cortex – M 系列
Cortex – M 系列针对低成本、低功耗的嵌入式应用,如智能家居设备、可穿戴设备等。其中,Cortex – M0、M3、M4、M7 各有特点。Cortex – M0 是低成本、低功耗的入门级产品;Cortex – M3 性能适中,应用广泛;Cortex – M4 集成了单周期 DSP 指令和 FPU(浮点单元),提升了计算能力;Cortex – M7 则是高性能版本,适用于对性能要求较高的嵌入式系统。
一、家族标识:区分 32 位与 8 位阵营
二、特定功能:定位芯片系列特性
该字段为 3 位数字(如 051、103 等),依据产品系列划分,不同数字对应不同特性:
三、闪存容量:直观了解存储能力
通过数字或字母标识(单位:Kbytes),快速定位芯片存储容量:
0 → 1KB
,1 → 2KB
,2 → 4KB
,依此类推,最大到 9 → 72KB
;A → 96 或 128KB
,B → 128KB
,Z → 192KB
,C → 256KB
,D → 384KB
,E → 512KB
,F → 768KB
,G → 1024KB
,H → 1536KB
,J → 2048KB
(部分仅针对 STM8A)。四、封装形式:匹配硬件设计需求
不同字母对应不同封装,影响芯片的物理形态与焊接方式:
五、固件版税:明确特殊功能授权
六、选项代码:定制化配置标识
通过代码组合表示特殊配置,例如:
七、引脚数:适配电路设计规模
不同字母对应引脚数量,决定芯片的接口丰富度与应用场景:
八、温度范围:适应不同工作环境
四、STM32F4 介绍
1. 概述
ST(意法半导体)推出了以基于 ARM® Cortex™ – M4 为内核的 STM32F4 系列高性能微控制器。该系列采用了 90 纳米的 NVM 工艺和 ART(自适应实时存储器加速器,Adaptive Real – Time Memory Accelerator™),具有出色的性能和丰富的外设资源。
2. 性能优势
自适应实时加速器(ART)
自适应实时加速器能够完全释放 Cortex – M4 内核的性能。当 CPU 工作于所有允许的频率(≤168MHz)时,在闪存中运行的程序,可以达到相当于零等待周期的性能,大大提升了程序执行的效率,使得 STM32F4 系列可达到最大 168MHz。例如,在一个需要快速处理大量数据的应用中,ART 加速器可以让程序更快速地从闪存中读取指令和数据,提高系统的响应速度。
计算能力提升
STM32F4 系列微控制器集成了单周期 DSP 指令和 FPU(浮点单元),提升了计算能力,可以进行一些复杂的计算和控制。在电机控制应用中,需要进行大量的数学运算来精确控制电机的转速和扭矩,STM32F4 的 DSP 指令和 FPU 可以大大提高计算效率,实现更精确的控制。
3. 产品特性
兼容性
STM32F4 系列兼容于 STM32F2 系列产品,便于 ST 的用户扩展或升级产品,而保持硬件的兼容能力。这意味着用户在开发新产品时,如果之前使用过 STM32F2 系列,只需要对软件进行适当的修改,就可以轻松迁移到 STM32F4 系列,降低了开发成本和时间。
先进技术和工艺
高性能
更多的提升
五、软件的安装
1. 获取安装包
软件的安装包可以去官网下载最新的软件安装包,也可以使用已有的安装包(链接: https://pan.baidu.com/s/1pDtqZbdj_TkMgAyve-FwcQ 提取码: xydc),就是版本没那么新,但是旧版的会适合学习一点,学习资料比较多而且又不容易出现新版的设置问题。例如,要安装 Keil MDK 软件,可以到 Keil 官方网站(Keil 下载)上下载适合自己操作系统的版本。
2. 软件安装
这里我们双击 MDK517 之后,安装程序,按引导操作一步一步做,来到安装路径选择界面。
路径建议选非系统盘(仅改盘符),更改盘符即可,不要随便更改路径,不然容易出现很多不必要的麻烦,因为跟着教程没有师傅可以随时指导,这样后续学习起来就会卡在软件下载部分了,软件下载不是难事,没必要过多纠结。
电子邮箱之类的信息随便填写即可,因为我们不需要去注册也可以使用。
出现相应界面之后只需要玩手机等待安装完成就可以了。
3. 安装芯片驱动
芯片驱动的安装路径会自动选择到软件安装的路径的,所以我们什么都不用管,只需要双击下面图片的 2 个安装包后一直点下一步就好了。例如,安装 STM32F4 系列芯片的驱动,安装过程会比较简单,按照提示操作就可以了。
4. 软件解码
以管理员身份运行 Keil5 软件。一定要以管理员。鼠标右键。
然后在启动的软件中点击左上角的File点击license Management。
进入到license Management界面后,如果没有解码是看不到 ID code 的。所以需要解码。
解码首先需要打开软件安装包中的 Keygen 软件(这里记得先关声音,会很吵,当然你好奇,喜欢听歌也可以听听)。
接下来的操作有点复杂,需要仔细一点操作,操作①首先 要把CID复制到软件中,②选择 Target 为 ARM,③点击 Generate 生成 code,④将生成的 code 复制到keil 5的ID Code位置⑤点击 Add LIC添加就完成了。
5. 下载器驱动
在这里下载运行代码我们使用的是下载器,因为下载器下载代码的速度相对较快而且方便,可以去买一个ST-Link,比较便宜一点。在安装包中找到安装路径下的指定位置,根据电脑选择驱动
现在一般都是 64 位的,不知道的话可以跟着操作做,知道的直接往后看就可以了,
1.打开系统设置。
2.选择系统
3.下拉找到系统信息
4.在设备规格中查看
选择好操作系统后双击安装就可以了。比如我们使用 ST-Link下载器,就需要安装对应的ST-Link 驱动。
6. 安装 CH340 驱动
首先找到图片路径下的文件,双击然后点击安装就可以了,显示预安装成功就代表没问题了。CH340 驱动CH340 是 USB 转串口芯片,实现接口转换,让设备经 USB 完成串口通信。在后面的语言模块和wifi模块中会使用到,现在先不安装也可以。
六、工程模板的建立
1. 文件准备
新的文件建议放在桌面,里面存放全部的工程文件,工程文件不用hal库,本次教程是库函数,不会有很大的内存,可以放心放到桌面,方便后续的查找
系统函数库和启动文件已经放在了keil5安装包的压缩中了,直接拿来用就可以了,这里不用教学,因为都是自带的文件,这里新手不要自己去下载,弄不好会比较麻烦,用户自定义文件我们先创建,之后我们自定义的文件都是放在里面。
这些3种文件都是会被分为头文件.h和源文件.c的,一般情况下我们会对这些文件进行分开存在,方便我们查看,但是移植很不方便,还有一种直接把.c和. h放在一起,这样移植会很方便,但是加头文件就比较麻烦,各有所长,这里我们使用定义 inc 和 src 文件夹。
例如,系统函数库文件可能会放在 src 文件夹下的一个子文件夹中,而对应的头文件则放在 inc 文件夹下的相应子文件夹中。
2. 创建工程
都准备好了之后,我们就开始正式创建一个工程。也是我们迈向嵌入式软件工程师的第一步,梦开始的地方。
打开Keil ,选择左上角的Project,点击 New Project 创建一个工程。
保存选择存放路径和工程名称,这里每个人都有每个人的习惯,我们学习的话跟着步骤操作即可。后面创建工程基本就都是复制粘贴了,工程文件复制就可以了,都很少自己创建工程了,除非是教学需要…….
接下来是选择芯片的型号,我们这次教程用到的是 STM32F405RGT6的芯片型号,选他。这里要下好芯片驱动才会有,你发现你没有肯定是你芯片驱动没下好,往上滑重新看看。
这里是询问你是否选择系统提供的启动文件,不必理会,直接关掉就可以了。
3. 配置工程
设置工程中文件的路径
打开三个小方块
在 Keil 中,需要设置工程中各个文件的路径,让编译器能够找到相应的文件。例如,要将系统函数库文件和启动文件的路径添加到工程中。
添加对应的文件
将准备好的源文件添加到工程中,而头文件是使用加载的方式,不需要手动添加。比如将 main.c 文件添加到工程中,编译器会根据头文件的包含语句自动找到相应的头文件。
设置输出位置,点击魔法棒
指定编译后生成的文件(如 hex 文件)的存放位置,方便后续下载和使用。
定义固件库的宏和添加头文件加载路径
定义固件库的宏(USE_STDPERIPH_DRIVER,STM32F40_41xxx)和添加头文件加载路径,让编译器能够正确识别和使用固件库。
修改下载方式
这个根据自己的情况而定,我们使用的是 STLink。
设置好了之后选择下载之后复位和运行,这样就不用下载完代码再按复位了。要是不选的话你会发现你的程序一直没法跑起来,大多数都是因为没设置,所以每次都要手动复位。
全部设置完成点击 OK。
4. Main 函数
创建一个文件后点击保存改名成 main.c
然后在里面添加如下代码:
#include "stm32f4xx.h"
int main() {
while (1) {
}
}
在文件里面右键可以出现添加头文件的提示。
点击编译如果是 0 Error 0 Warning 就代表着工程没有问题。
下载器连接方式
根据下载器的线选择链接
通过以上步骤,你已经对 STM32(M4)有了一个初步的了解,并完成了开发环境的搭建和工程模板的建立。接下来,你可以基于这个基础,进一步学习和开发更复杂的应用程序。希望这篇文章能帮助你顺利入门 STM32(M4)开发!
作者:xyd陈宇阳