32单片机入门持续更新中

配套资料为野火霸道V2

初识 STM32

4.1 什么是 STM32 STM32,从字面上来理解,ST 是意法半导体,M 是 Microelectronics 的缩写,32 表示 32 位,合起 来理解,STM32 就是指 ST 公司开发的 32 位微控制器。在如今的 32 位控制器当中,STM32 可以 说是最璀璨的新星,它受宠若娇,大受工程师和市场的青睐,无芯能出其右。 

4.1.1 STM32 诞生的背景 51 是嵌入式学习中一款入门级的精典 MCU,因其结构简单,易于教学,且可以通过串口编程而 不需要额外的仿真器,所以在教学时被大量采用,至今很多大学在嵌入式教学中用的还是 51。51 诞生于 70 年代,属于传统的 8 位单片机,如今,久经岁月的洗礼,既有其辉煌又有其不足。现 在的市场产品竞争越来越激烈,对成本极其敏感,相应地对 MCU 的性能要求也更苛刻:更多功 能,更低功耗,易用界面和多任务。面对这些要求,51 现有的资源就显得得抓襟见肘。所以无论 是高校教学还是市场需求,都急需一款新的 MCU 来为这个领域注入新的活力。 基于这样的市场需求,ARM 公司推出了其全新的基于 ARMv7 架构的 32 位 Cortex-M3 微控制器 内核。紧随其后,ST(意法半导体)公司就推出了基于 Cortex-M3 内核的 MCU——STM32。STM32 凭借其产品线的多样化、极高的性价比、简单易用的库开发方式,迅速在众多 Cortex-M3 MCU 中 脱颖而出,成为最闪亮的一颗新星。STM32 一上市就迅速占领了中低端 MCU 市场,受到了市场 和工程师的无比青睐,颇有星火燎原之势。 作为一名合格的嵌入式工程师,面对新出现的技术,我们不是充耳不闻,而是要尽快吻合市场的 需要,跟上技术的潮流。如今 STM32 的出现就是一种趋势,一种潮流,我们要做的就是搭上这 趟快车,让自己的技术更有竞争力。

MCU是Microcontroller Unit的缩写,中文翻译为微控制器。它是一种集成了处理器核心、存储器和各种输入输出接口的集成电路芯片,用于控制电子设备的运行。单片机是MCU的一种,指的是在一个芯片上集成了微处理器、存储器和各种接口电路的集成电路。因此,可以说MCU是单片机的一种。
 

4.2 STM32 能做什么 

STM32 属于一个微控制器,自带了各种常用通信接口,比如 USART、I2C、SPI 等,可接非常多 的传感器,可以控制很多的设备。现实生活中,我们接触到的很多电器产品都有 STM32 的身影, 比如智能手环,微型四轴飞行器,平衡车、移动 POST 机,智能电饭锅,3D 打印机等等。下面我 们以最近最为火爆的两个产品来讲解下,一个是手环,一个是飞行器。

4.2.1 智能手环

图 4‑1 三星 GearFit 智能手环 红圈:STM32F439ZIY6S 处理器(我们简称之为 439),2048KB FLASH ,256KB RAM ,WLCSP143 封装。 橙圈:Macronix MX69V28F64 16 MB 闪存,基于 MCP 封装的存储器,是一种包含了 NOR 和 SRAM 的闪存,这在手环手机这种移动设备中经常使用,优点是体积小,可以减小 PCB 的尺寸。这个 闪存用的 439 的 FSMC 接口驱动。 黄圈:InvenSense MPU-6500 陀螺仪/加速度计,用 439 的 I2C 接口驱动。 绿圈:博通 BCM4334WKUBG 芯片,支持 802.11n,蓝牙 4.0+HS 以及 FM 接收芯片,用 439 的 SDIO 或者 SPI 接口驱动。 显示:1.84”可弯曲屏幕 (Super AMOLED),432 x 128 像素。触摸部分用 439 的 I2C 接口驱动,OLED 显示部分用 LTDC 接口驱动。 表格 4‑1 三星 Gear Fit 和野火 STM32f103“指南者”资源对比

闪存是一种非易失性存储器,它可以实现数据的快速读写操作。闪存通常用于存储程序代码、操作系统、固件以及其他数据。闪存具有快速的读取速度和低功耗的特点,适合用于存储需要频繁读取和写入的数据。常见的闪存类型包括NAND闪存和NOR闪存,它们在存储结构和使用场景上有所不同。闪存广泛应用于各种电子设备中,如手机、平板电脑、相机、固态硬盘等。
 

资源三星 Gear Fit指南者
CPUSTM32F439ZIY6S,WLCSP143 封装STM32F103VET6,LQPF100 封装
存储NOR+SRAM 16MB,FSMC 接口串行 FLASH 16MB ,SPI 接口
显示1.84 寸的 AMOLED,RGB 接口,LTDC 驱动3.2 寸电阻屏,FSMC 接口
陀螺仪MPU6050,I2C 接口可外接 MPU6050 模块,I2C 接口
无线通信蓝牙: 博通 BCM4334,SDIO 或者 SPI 接口WIFI:ESP8266,UART 接口

除了这几个重要资源的对比,我们的指南者开发板上还板载了 EEPROM,USB 转串口,蜂鸣器, LED,普通按键,电容按键等外设资源,还可以扩展 VS1053 MP3 模块,W5500 以太网模块,利 用这些可以充分的学习 STM32F103VET6 这个芯片。在板子上面,还可以跑系统 ucosiii,学习图 形界面 emwin。如果功夫所至,学完之后,自己都可以做一个类似 Gear Fit 这样的手环。可很多 人又会说,Gear Fit 涉及硬件和软件,整个系统这么复杂,并不是一个人可以完成的。说的没错, 我们可以做不了,但是我们的能力可以无限接近,多学点,技多不压身嘛。

5.2.2 微型四轴飞行器

现在无人机非常火热,高端的无人机用 STM32 做不来,但是小型的四轴飞行器用 STM32 还是绰 绰有余的。如图微型四轴飞行器 所示飞行器的基本都可以用 STM32 搞定。

上面的是属于产品,如果想自己 DIY,可以在入门 STM32 之后,买一本飞行器 DIY 的书,边做 边学。入门级的书籍推荐《四轴飞行器 DIY—基于 STM32 微控制器》,见图四轴飞行器 DIY_ 基 于 STM32 微控制器。

5.3 STM32 怎么选型

5.3.1 STM32 分类

STM32 有很多系列,可以满足市场的各种需求,从内核上分有 Cortex-M0、M3、M4 和 M7 这几 种,每个内核又大概分为主流、高性能和低功耗。具体的见表格 STM8 和 STM32 分类。 单纯从学习的角度出发,可以选择 F1 和 F4,F1 代表了基础型,基于 Cortex-M3 内核,主频为 72MHZ,F4 代表了高性能,基于 Cortex-M4 内核,主频 180M。 之于 F1,F4(429 系列以上)除了内核不同和主频的提升外,升级的明显特色就是带了 LCD 控制 器和摄像头接口,支持 SDRAM,这个区别在项目选型上会被优先考虑。但是从大学教学和用户 初学来说,还是首选 F1 系列,目前在市场上资料最多,产品占有量最多的就是 F1 系列的 STM32。

5.3.2 STM32 命名方法 这里我们以野火 F103 霸道用的型号 STM32F103ZET6 来讲解下 STM32 的命名方法

有关更详细的命名方法见图STM8和STM32命名方法

5.3.3选择合适的MCU

了解了STM32的分类和命名方法之后,就可以根据项目的具体需求先大概选择哪类内核的MCU,普通应用,不需要接大屏幕的一般选择Cortex-M3内核的F1系列,如果要追求高性能,需要大量的数据运算,且需要外接RGB大屏幕的则选择Cortex-M4内核的F429系列。

MCU是Microcontroller Unit的缩写,中文意思是微控制器单元。MCU是一种集成了处理器核、存储器、输入输出接口和定时器等功能的单芯片微型计算机系统,通常用于控制各种电子设备和系统。
 

明确了大方向之后,接下来就是细分选型,先确定引脚,引脚多的功能就多,价格也贵,具体得根据实际项目中需要使用到什么功能,够用就好。确定好了引脚数目之后再选择FLASH大小,相同引脚数的MCU会有不同的FLASH大小可供选择,这个也是根据实际需要选择,程序大的就选择大点的FLASH,要是产品一量产,这些省下来的都是钱啊。有些月出货量以KK(百万数量级)为单位的产品,不仅是MCU,连电阻电容能少用就少用,更甚者连PCB的过孔的多少都有讲究。项目中的元器件的选型的水深的很,很多学问。

5.3.3.1如何分配原理图IO

在画原理图之前,一般的做法是先把引脚分类好,然后才开始画原理图,引脚分类具体见表格画原理图时的引脚分类。

5.3.3.2如何寻找IO的功能说明

要想根据功能来分配IO,那就得先知道每个IO的功能说明,这个我们可以从官方的数据手册里面找到。在学习的时候,有两个官方资料我们会经常用到,一个是参考手册(英文叫Referencemanual),另外一个是数据手册(英文叫Data Sheet)。两者的具体区别见表格参考手册和数据手册的内容区别。

一句话概括:数据手册主要用于芯片选型和设计原理图时参考,参考手册主要用于在编程的时候查阅。

在数据手册中,有关引脚定义的部分在Pinouts and pin description这个小节中,具体定义见表格数据手册中对引脚定义。5.3.3.3开始分配原理图IO

比如我们的F103“霸道”使用的MCU型号是STM32F103ZET6,封装为LQFP144,我们在数据手册中找到这个封装的引脚定义,然后根据引脚序号,一个一个复制出来,整理成excel表。具体整理方法按照表格画原理图时的引脚分类画原理图时的引脚分类即可。分配好之后就开始画原理图。5.3.3.3开始分配原理图IO

比如我们的F103“霸道”使用的MCU型号是STM32F103ZET6,封装为LQFP144,我们在数据手册中找到这个封装的引脚定义,然后根据引脚序号,一个一个复制出来,整理成excel表。具体整理方法按照表格画原理图时的引脚分类画原理图时的引脚分类即可。分配好之后就开始画原理图。

5.3.4 PCB哪里打样

第6章什么是寄存器

6.1什么是寄存器

我们经常说寄存器,那么什么是寄存器?这是我们本章需要讲解的内容,在学习的过程中,大家带着这个疑问好好思考下,到最后看看大家能否用一句话给寄存器下一个定义。

6.2 STM32长啥样

我们开发板中使用的芯片是144pin的STM32F103ZET6,具体见图STM32F103ZET6实物图。这个就是我们接下来要学习的STM32,它将带领我们进入嵌入式的殿堂。

芯片正面是丝印,ARM应该是表示该芯片使用的是ARM的内核,STM32F103ZET6是芯片型号,后面的字应该是跟生产批次相关,最上面的是ST的LOGO。

芯片四周是引脚,左下角的小圆点表示1脚,然后从1脚起按照逆时针的顺序排列(所有芯片的引脚顺序都是逆时针排列的)。开发板中把芯片的引脚引出来,连接到各种传感器上,然后在STM32上编程(实际就是通过程序控制这些引脚输出高电平或者低电平)来控制各种传感器工作,通过做实验的方式来学习STM32芯片的各个资源。开发板是一种评估板,板载资源非常丰富,引脚复用比较多,力求在一个板子上验证芯片的全部功能。STM32F103ZET6正面引脚图

6.3芯片里面有什么

我们看到的STM32芯片是已经封装好的成品,主要由内核和片上外设组成。若与电脑类比,内核与外设就如同电脑上的CPU与主板、内存、显卡、硬盘的关系。

STM32F103采用的是Cortex-M3内核,内核即CPU,由ARM公司设计。ARM公司并不生产芯片,而是出售其芯片技术授权。芯片生产厂商(SOC)如ST、TI、Freescale,负责在内核之外设计部件并生产整个芯片,这些内核之外的部件被称为核外外设或片上外设。如GPIO、USART(串口)、I2C、SPI等都叫做片上外设。具体见图STM32芯片架构简图。

芯片(这里指内核,或者叫CPU)和外设之间通过各种总线连接,其中驱动单元有4个,被动单元也有4个,具体见图STM32F10xx系统框图。为了方便理解,我们都可以把驱动单元理解成是CPU部分,被动单元都理解成外设。下面我们简单介绍下驱动单元和被动单元的各个部件。

6.3.1 ICode总线

ICode中的I表示Instruction,即指令。我们写好的程序编译之后都是一条条指令,存放在FLASH中,内核要读取这些指令来执行程序就必须通过ICode总线,它几乎每时每刻都需要被使用,它是专门用来取指的。

6.3.2驱动单元

6.3.2.1 DCode总线

DCode中的D表示Data,即数据,那说明这条总线是用来取数的。我们在写程序的时候,数据有常量和变量两种,常量就是固定不变的,用C语言中的const关键字修饰,是放到内部的FLASH当中的,变量是可变的,不管是全局变量还是局部变量都放在内部的SRAM。因为数据可以被Dcode总线和DMA总线访问,所以为了避免访问冲突,在取数的时候需要经过一个总线矩阵来仲裁,决定哪个总线在取数。

6.3.2.2系统总线

系统总线主要是访问外设的寄存器,我们通常说的寄存器编程,即读写寄存器都是通过这根系统总线来完成的。

6.3.2.3 DMA总线

DMA总线也主要是用来传输数据,这个数据可以是在某个外设的数据寄存器,可以在SRAM,可以在内部的FLASH。因为数据可以被Dcode总线和DMA总线访问,所以为了避免访问冲突,在取数的时候需要经过一个总线矩阵来仲裁,决定哪个总线在取数。

6.3.3被动单元

6.3.3.1内部的闪存存储器

内部的闪存存储器即FLASH,我们编写好的程序就放在这个地方。内核通过ICode总线来取里面的指令。

6.3.3.2内部的SRAM

内部的SRAM,即我们通常说的RAM,程序的变量,堆栈等的开销都是基于内部的SRAM。内核通过DCode总线来访问它。

6.3.3.3 FSMC

FSMC的英文全称是Flexible static memory controller,叫灵活的静态的存储器控制器,是STM32F10xx中一个很有特色的外设,通过FSMC,我们可以扩展内存,如外部的SRAM,NAND-FLASH和NORFLASH。但有一点我们要注意的是,FSMC只能扩展静态的内存,即名称里面的S:static,不能是动态的内存,比如SDRAM就不能扩展。

6.3.3.4 AHB到APB的桥

从AHB总线延伸出来的两条APB2和APB1总线,上面挂载着STM32各种各样的特色外设。我们经常说的GPIO、串口、I2C、SPI这些外设就挂载在这两条总线上,这个是我们学习STM32的重点,就是要学会编程这些外设去驱动外部的各种设备。

6.4存储器映射

在图STM32F10xx系统框图中,被控单元的FLASH,RAM,FSMC和AHB到APB的桥(即片上外设),这些功能部件共同排列在一个4GB的地址空间内。我们在编程的时候,可以通过他们的地址找到他们,然后来操作他们(通过C语言对它们进行数据的读和写)。

6.4.1存储器映射

存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程就称为存储器映射,具体见图存储器映射。如果给存储器再分配一个地址就叫存储器重映射。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/819584.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在Vue3中使用H.265视频EasyPlayer.js流媒体播放器?

H5无插件流媒体播放器EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,可支持H.264与H.265编码格式,性能稳定、播放流畅,能支持WebSocket-FLV、HTTP-FLV,HLS(m3u8&#…

【开源鸿蒙】调试OpenHarmony轻量系统QEMU RISC-V版本

【开源鸿蒙】调试OpenHarmony轻量系统QEMU RISC-V版本 一、准备工作1.1 编译OpenHarmony源码1.2 确认OHOS_Image已生成1.3 确认OHOS_Image文件是否有调试信息1.4 检查config.gni文件是否有-g编译选项 二、GDB调试2.1 启动QEMU模拟器2.2 启动GDB调试器2.3 连接QEMU模拟器2.4 使用…

性能优化-02

uptime 依次显示当前时间、系统运行时间以及正在登录用户数,最后三个数字依次则是过去1分钟、5 分钟、15 分钟的平均负载(Load Average) 平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数&#xf…

Vue3(四):Pinia

一、Pinia介绍 Pinia是一个专门为Vue.js设计的状态管理库,它提供了一种简单和直观的方式来管理应用程序的状态。在使用Pinia时,可以轻松地创建定义状态的存储,然后将其与Vue组件绑定,使它们能够使用该状态。和上一个博客提到的Vu…

【小程序】生成短信中可点击的链接

文章目录 前言一、如何生成链接二、仔细拜读小程序开发文档文档说明1文档说明2 总结 前言 由于线上运营需求,需要给用户发送炮轰短信,用户通过短信点击链接直接跳转进入小程序 一、如何生成链接 先是找了一些三方的,生成的倒是快速&#xf…

TVS参数、选型、对比

https://www.kdocs.cn/l/cpz6hHr7GRlh VRWM (Reverse working voltage) TVS 的最高工作电压,可连续施加不引起 TVS 劣化或损坏的最高工作峰值电压或直流峰值电压。 对于交流电压,用最高工作电压有效值表示,在VRWM 下&a…

科技助力上亿用户隐私安全保护,合合信息两款产品再获CCIA PIA星级标识

随着互联网技术的飞速发展,个人信息的收集、存储、使用和传输变得日益频繁,其泄露和滥用的风险也随之增加,个人信息保护已成为社会共同关注的热点议题。近期,“中国网络安全产业联盟(CCIA)数据安全工作委员…

【Windows】SecureCRT v9.2.3永久使用教程亲测可用

​ 软件介绍 SecureCRT 是一款常用的 SSH(安全外壳协议)和 Telnet 客户端软件,主要用于远程服务器管理和网络设备配置。它具有以下主要功能: 1.安全连接:SecureCRT 提供了强大的加密算法,保障用户与服务…

建立时间/保持时间为负是什么情况

目录 建立时间为负保持时间为负参考 在说明建立时间和保持时间为何为负的情况下,首先可以看看建立时间Tsu和保持时间Th的由来,可参考如下两篇文章: 建立时间和保持时间理解_为什么要满足建立时间和保持时间-CSDN博客 ic基础|时序篇&#xff…

GPT的使用

个人笔记(整理不易,有帮助点个赞) 笔记目录:学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客 个人随笔:工作总结随笔_8、以前工作中都接触过哪些类型的测试文档-CSDN博客 网站sms-activate.or…

Linux知识点(3)

文章目录 11. 进程间通信11.1 管道11.1.0 |11.1.1 匿名管道11.1.2 命名管道11.1.3 用匿名管道形成进程池 11.2 system V共享内存11.2.1 system V函数11.2.2 system 命令 11.3 system V消息队列11.4 system V 信号量 12. 进程信号12.1 前台进程和后台进程12.1.1 jobs12.1.2 fg &…

哈尔滨等保测评之什么是linux及快捷方式,看完这篇你还有什么不懂得嘛?

Linux 的学习对于一个程序员的重要性是不言而喻的。前端开发相比后端开发,接触 Linux 机会相对较少,因此往往容易忽视它。但是学好它却是程序员必备修养之一。 什么是Linux Linux 系统内核与 Linux 发行套件的区别 Linux 系统内核指的是由 Linus Torva…

计算机网络(五)传输层

传输层 从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务,属于面向通信部分的最高层,同时也是用户功能中的最低层 传输层功能: 传输层提供应用进程之间的逻辑通信(即端到端的通信)。与网络层的区别区别是&#xf…

SSH客户端工具输入目标地址端口远程失败故障原因和解决方案

问题表现:SSH客户端工具输入目标地址端口远程失败时,出现ssh client 报 algorithm negotiation failed的异常信息。 使用SSH Secure Shell Client连接Linux服务器的SSH的时候有时会出现错误提示信息:ssh algorithm negotiation failed。这是…

ts文件用什么播放器?带您了解TS文件播放器的选择

ts文件用什么播放器?在数字多媒体时代,各种视频文件格式层出不穷,其中TS文件作为一种常见的视频封装格式,广泛应用于高清视频的制作与传输。然而,对于许多用户来说,如何选择合适的播放器来播放TS文件却是一…

Windows电脑使用Everything+cpolar搭建在线资料库并实现无公网IP管理文件

文章目录 推荐前言1.软件安装完成后,打开Everything2.登录cpolar官网 设置空白数据隧道3.将空白数据隧道与本地Everything软件结合起来总结 推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家…

算法——马尔可夫与隐马尔可夫模型

HMM(Hidden Markov Model)是一种统计模型,用来描述一个隐含未知量的马尔可夫过程(马尔可夫过程是一类随机过程,它的原始模型是马尔科夫链),它是结构最简单的动态贝叶斯网,是一种著名…

attention and tell论文【无标题】

这个公式使用LaTeX语法表示为: ( i t f t o t c t ) ( σ σ σ tanh ⁡ ) T D m n , n ( E y t − 1 h t − 1 x t ) \begin{pmatrix}i_t \\f_t \\o_t \\c_t\end{pmatrix} \begin{pmatrix}\sigma \\\sigma \\\sigma \\\tanh\end{pmatrix}T_{Dmn,n}\begin{pmatri…

内外网文件摆渡系统,如何贯通网络两侧被隔断的工作流?

随着业务范围不断扩大,产生的数据体量越来越多,企业会采取网络隔离,对核心数据进行保护。网络隔离主要目的是保护企业内部的敏感数据和系统不受外部网络攻击的风险,可以通过物理或逻辑方式实现,例如使用防火墙、网闸、…

Day13-Python基础学习之数据分析案例

数据分析案例 data_define.py # 数据定义的类 class Record:def __init__(self, date, order_id, money, province):self.date dateself.order_id order_idself.money moneyself.province province ​def __str__(self):return f"{self.date}, {self.order_id}, {se…