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

STM32(M4)入门: 概述、keil5安装与模板建立(价值 3w + 的嵌入式开发指南)

前言:本教程内容源自信盈达教培资料,价值3w,使用的是信盈达的405开发版,涵盖面很广,流程清晰,学完保证能从新手入门到小高手,软件方面可以无基础学习,硬件学习支持两种模式:一是可以自己买一个405的核心板直接连杜邦线到模块就可以学习了,本教程循环递进,一次不会使用到很多模块,可以不用担心杜邦线太乱,所以不用使用面包板。二:需要一点硬件基础,根据原理图画板,如果很多人不会后续会考虑单独出一篇嘉立创的画图教程。教程配套原理图与接线配置将在 GPIO 章节呈现。有什么疑问多评论交流。

一、嵌入式系统的概念

嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪的专用计算机系统,严格满足功能、可靠性、成本、体积、功耗等要求。

  • 概念理解:与通用计算机不同,嵌入式系统专注特定场景。如智能门锁控制系统,聚焦身份识别与开关控制,兼顾成本、体积与可靠性。
  • 应用领域:工业控制、智能家居、汽车电子、医疗设备等。如工业自动化生产线监控、汽车发动机控制等

二、常见处理器

嵌入式领域处理器多样,按性能与应用场景可分为:

  • 8 位处理器:8051(教学为主)、AVR/PIC/STM8(简单系统适用)。
  • 16 位处理器:MSP430(超低功耗,智能手环等续航敏感设备)。
  • 32 位处理器:ARM 占据 80% 以上市场(手机、工业机器人等)。
  • 专用处理器:DSP(数字信号与音视频处理)、FPGA(灵活可编程,高速数据采集)。

三、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 位阵营

  • STM32:代表 32 位 MCU/MPU(微控制器 / 微处理器),适用于高性能、多任务的嵌入式场景,如工业控制、智能家居中枢等。
  • STM8:代表 8 位 MCU,常用于对成本、功耗敏感且功能需求相对简单的场景,如简单传感器节点、低端家电控制。

二、特定功能:定位芯片系列特性

该字段为 3 位数字(如 051、103 等),依据产品系列划分,不同数字对应不同特性:

  • STM32 系列
    • 051:入门级,适合学习与简单应用;
    • 103:基础型,经典且应用广泛;
    • 303:带 DSP 和模拟外设,适用于信号处理场景;
    • 407:高性能(集成 DSP 和 FPU),满足复杂计算需求;
    • 152:超低功耗,适合电池供电设备。
  • STM8 系列
    • 103:主流型,平衡性能与成本;
    • L31:低端汽车级,满足汽车电子特定需求。

三、闪存容量:直观了解存储能力

通过数字或字母标识(单位:Kbytes),快速定位芯片存储容量:

  • 数字标识:如 0 → 1KB1 → 2KB2 → 4KB,依此类推,最大到 9 → 72KB
  • 字母标识A → 96 或 128KBB → 128KBZ → 192KBC → 256KBD → 384KBE → 512KBF → 768KBG → 1024KBH → 1536KBJ → 2048KB(部分仅针对 STM8A)。

四、封装形式:匹配硬件设计需求

不同字母对应不同封装,影响芯片的物理形态与焊接方式:

  • B:Plastic DIP(塑料双列直插,适合手工焊接与调试);
  • D:Ceramic DIP(陶瓷双列直插,耐高温);
  • G:Ceramic QFP(陶瓷方形扁平,高密度封装);
  • H:LFBGA/TFBGA(薄型 / 微型球栅阵列,节省 PCB 空间);
  • M:Plastic SO(塑料小外形,常见于小规模电路);
  • P:TSSOP(薄型缩小型,兼顾空间与引脚密度);
  • Q:Plastic QFP(塑料方形扁平,性价比高)。

五、固件版税:明确特殊功能授权

  • U:Universal(不用于生产,如样品、开发工具);
  • V:MP3 解码器(集成 MP3 解码功能);
  • W:MP3 编码器(支持 MP3 编码操作);
  • J:IS2T JAVA(特定 Java 功能,适用于相关应用开发)。

六、选项代码:定制化配置标识

通过代码组合表示特殊配置,例如:

  • xTR:No RTC(无实时时钟,仅 STM8L);
  • Dxx:BOR OFF(电源复位功能关闭,分标准或特殊配置);
  • Sxx:BOR OFF with Boot I2CS(特殊引导配置,用于特定启动场景);
  • bxx:BOR ON(电源复位功能开启,带标准配置)。

七、引脚数:适配电路设计规模

不同字母对应引脚数量,决定芯片的接口丰富度与应用场景:

  • D:140 引脚(适合高集成度、多外设场景);
  • C:48 或 49 引脚(常见于中等规模应用);
  • U:63 引脚(特定系列的标准配置);
  • Y:20 引脚(仅 STM8,适合极简设计);
  • A:169 引脚(高端型号,支持大量外设与接口)。

八、温度范围:适应不同工作环境

  • 6 和 A:-40℃ 到 +85℃(常规工业级温度范围);
  • 7 和 B:-40℃ 到 +105℃(适用于稍高温环境);
  • 3 和 C:-40℃ 到 +125℃(工业高温场景);
  • D:-40℃ 到 +150℃(极端高温环境,如特殊工业设备)。

四、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 系列,降低了开发成本和时间。

先进技术和工艺

  • 存储器加速器:自适应实时加速器(ART Accelerator™ ),让程序在闪存中的运行速度更快。
  • 多重 AHB 总线矩阵和多通道 DMA:支持程序执行和数据传输并行处理,数据传输速率非常快。例如,在进行大数据量的存储或传输时,DMA 可以直接在内存和外设之间进行数据传输,而不需要 CPU 的干预,大大提高了数据传输的效率。
  • 90nm 工艺:使得芯片的功耗更低,集成度更高。

高性能

  • 210DMIPS@168MHz:在 168MHz 的主频下能达到 210DMIPS 的处理能力,性能强劲。
  • 程序运行效率:由于采用了 ST 的 ART 加速器,程序从 FLASH 运行相当于 0 等待。
  • 更多的存储器:多达 1MB FLASH(将来 ST 计划推出 2MB FLASH 的 STM32F4),192Kb SRAM(128KB 在总线矩阵上,64KB 在专为 CPU 使用的数据总线上),可以满足更复杂的程序和数据存储需求。
  • 高级外设与 STM32F2 兼容:如 USB OTG 高速 480Mbit/s、IEEE1588、以太网 MAC 10/100、PWM 高速定时器(168MHz 最大频率)、加密 / 哈希硬件处理器(32 位随机数发生器(RNG))、带有日历功能的 32 位 RTC(<1 μA 的实时时钟,1 秒精度)。

更多的提升

  • 低电压:1.8V 到 3.6V VDD,在某些封装上,可降低至 1.7V,适应不同的电源环境。
  • 全双工 I2S:可用于音频数据的传输。例如,在一个音频播放系统中,I2S 接口可以方便地与音频编解码器进行连接,实现高质量的音频传输。
  • 12 位 ADC:0.41us 转换 / 2.4Msps(7.2Msps 在交替模式),能快速、准确地采集模拟信号。在一个温度采集系统中,ADC 可以将温度传感器输出的模拟信号转换为数字信号,供处理器进行处理。
  • 高速 USART:可达 10.5Mbits/s,方便与其他设备进行高速数据通信。
  • 高速 SPI:可达 37.5Mbits/s,常用于与外部设备如 SPI 接口的传感器、存储器等进行高速数据传输。
  • Camera 接口:可达 54M 字节 /s,可用于连接摄像头进行图像采集。

五、软件的安装

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 就代表着工程没有问题。

下载器连接方式

根据下载器的线选择链接

  • VCC —— 3.3V
  • SWD —— DIO
  • CLK —— CLK
  • GND —— GND

通过以上步骤,你已经对 STM32(M4)有了一个初步的了解,并完成了开发环境的搭建和工程模板的建立。接下来,你可以基于这个基础,进一步学习和开发更复杂的应用程序。希望这篇文章能帮助你顺利入门 STM32(M4)开发!

原文地址:https://blog.csdn.net/2301_76903795/article/details/147091288
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mrgr.cn/news/98401.html

相关文章:

  • 《高阶函数:把函数当玩具传来传去》
  • Linux命令-vim编辑
  • 第十六届蓝桥杯大赛软件赛省赛 Python 大学 B 组 满分题解
  • 供应链管理:探索供应链管理的边界
  • android面试情景题详解:android如何处理断网、网络切换或低速网络情况下的业务连续性
  • SomeIP:服务端or客户端发送event或method源码参考via CAPL
  • linux多线(进)程编程——番外1:内存映射与mmap
  • 欧拉服务器操作系统部署deekseep(Ollama+DeekSeep+open WebUI)
  • 数据库索引深度解析:原理、类型与高效使用实践
  • ARCGIS PRO DSK 利用两期地表DEM数据计算工程土方量
  • 在轨道交通控制系统中如何实现μs级任务同步
  • 2025年第十六届蓝桥杯省赛真题解析 Java B组(简单经验分享)
  • cline 提示词工程指南-架构篇
  • [Python基础速成]2-模块与包与OOP
  • Windows系统docker desktop安装(学习记录)
  • java锁机制(CAS和synchronize)的实现原理和使用方法
  • Domain Adaptation领域自适应
  • 科目四 学习笔记
  • 智能云图库-1-项目初始化
  • 祁连山国家公园shp格式数据