单片机--STM32

news2024/11/26 11:23:44

 

【1】课程回顾

【2】课程介绍

    1.单片机简介

 单片机是单片微型计算机的简称,Mcu是Microcontroller的简称,也就是嵌入式微控制器。采用集成电路技术将具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、定时器/计时器、多种I/O口和中断系统等功能集成到一块硅片上。可以说单片机就是一个小而完善的微型计算机系统。

     2.单片机型号

           51单片机   -   8051架构 : 

               STC89C51      宏晶科技STC  (8位单片机)

                AT89C51        ATME                                       

           32单片机  (32位单片机)   

                 STM32       意法半导体ST

                 GD32         兆易创新GD

  Tips:处理器位数:CPU单次运算最大处理的数据位数

            处理器位数高,运算速度快。

【3】硬件基础

1.电路基础

电的类比

    一般我们把电子知识想复杂了,实际电就可以理解为是水,电的特性和水的特性是类似的,因为电是看不见的,所以我们理解起来有困难。

电流

这个是水流量计( 1单位流量= 1吨/小时=1T/H)

这个是电流表(安培 1A= 1库伦/秒)

电流表实际就可以看成是水流表,就是计算水的流量,电的流量的意思。我们水管中流出了多少水,很容易理解,实际电在电线中流动,可以看成水的流动是一样的 。

电压

这个是水压表

这个是电压表

我们可以认为水压表测量水对水管的压力,电压表是测量电对电线的压力。水是从水压高的地方流到水压低的地方,电也是从电压高的地方流到电压低的地方。

电路

水到处流动 形成小河、小溪之类。电到处流动,形成什么,就是电路。水走的路是水路,电路这样就好理解了,以下是家装用的水路图。

类比电路图

不要把电路图当中的东西看复杂了 ,我们看水路图 实际就是一个个水阀、洗衣机、热水器之类的。电路图中每个元件、设备、也就是类似于那些水路中的设备,无非是一个用水来驱动、控制,一个用电的。

3.电子元器件

电路图中有很多元件,我们可以把很多元件看成水路中的很多元件就容易理解。

电阻

电阻实际是大小不同的水管让水流的小一点,慢一点,这样后面的器件,不至于受到大电流冲击搞坏了 。电阻无方向,电阻就是阻碍电的流动,你可以想象一个水管里有水垢,水垢越多,水阻越大,水流越小。同理,电阻越大,导体对电流的阻碍作用越大,电流越小。

实物图

电路符号

电容

电容是可以理解成一个装水的容器(水桶、池塘、湖泊、水库),水要通过池塘、湖泊,首先需要灌满它才能过得去。所以这部分水(电能)可以被这些容器保存下来,这是电容的储能作用,另外很明显,无论前面的水流多么湍急,到了湖泊就要先灌满它,湖泊开口再向下游流水,自然流水就缓慢一些,所以它也有缓冲的作用。大波浪到了湖泊变平稳,实际变成了小波浪,波的形状都变了,这就是过滤的作用,只允许特定的波通过。

所以电容在电路中是储能、缓冲、减压、过滤器件。

  1. 储能器件 对应电解电容
  2. 缓冲过滤器件 对应耦合电容
  3. 漏斗 对应滤波电容

同一颗电容在电路中摆放的位置不同,作用不同,也就是在这个电路中它主要起漏斗的作用,但是在另外的电路中,它就是做储能了。因为后面的元件需要是稳定的水流, 你可以这样想象我们拿着水桶往水缸里倒水的时候,水面上起的水花是很大的,这样的水花,对后面的器件是有损伤的。

实物

电路符号

二极管

二极管实际是单向阀门, 意思就是说 水只能从一头进另一头出 。二极管就是这么个作用,它只能从一边过来的电能通过,从另一边过来的实际就过不去,记得电看成是水。

这个就是二极管的符号,很形象,右边有个竖杠,很明显,从左边来的电能流到右边,从右边来的就被挡到了。左边来挡片冲开,右边来抵死。

二极管在电路中的特性与水路中的单向阀基本原理一致。

实物

电路符号

三极管

三极管实际是个小阀门控制大阀门的器件。

三极管有两种类型,PNP和NPN型。两者的不同参考:npn与pnp五大不同

终于有人讲了,凭什么三极管能放大?_哔哩哔哩_bilibili

两种三极管使用时候决定着电路图的接法不同,如下是个常见的共基极PNP型电源控制开关

实物

电路符号

    半导体三极管有三个电极:分别是基极、集电极和发射极。半导体管在工作时要加工作电压,于是就产生了各极电流。半导体三极管在工作时发射极电流等于基极和集电极电流之和。其中基极电流最小,发射极电流最大。在基极加一很小的电流,在集电极就能输出很大的电流,因此三极管有放大作用。三极管主要作用是放大信号。常用在放大电路和振荡电路中。

4.常见电气接口

音频

视频

电源

RJ45网口

DB9串口

公头和母头

公头就是插头上是针的,母头就是插头上是孔的

线序及作用

实际开发过程中,线序可以去网上搜,只需要知道线序如何看,及红色的三条线即可。

5.开发板/最小系统板

开发板通常是学习用途,功能比较全,接口丰富,是用于研发、研究、学习的一块板子。

最小系统板是个核心板,集成了核心的通用功能,可以根据需求定制各种不同的底板,通用性较好。再者核心板作为一块独立的模块被分离出来,也降低了开发的难度,增加了系统的稳定性和可维护性通常用于做项目,也可以作为模块在产品里在直接用。

PCB板(Printed Circuit Board),中文名称为印制电路板,又称印刷线路板,是重要的电子部件,是电子元器件的支撑体,是电子元器件电气相互连接的载体。由于它是采用电子印刷术制作的,故被称为印刷电路板。

【4】STM32介绍

  1.简介

           STM32是意法半导体公司生成一款32位的微控制器。

  2.STM32的优势

  产品型号丰富,可选择性强;

       运算速度快,功耗低;

       处理器外设接口丰富;

       库函数开发体系学习资料多(可以抛开寄存器),应用广泛。

 3.命名规范

        STM32G030C8T6

         ST - 意法半导体

         M  - 微型控制器

         32 - 32位处理器

        类型 -  G - 多用途型

                    F - 通用型

                    H - 高性能型

                    L - 低功耗型

                    S - 精简型

        系列  -   0     精简系列 

                    1/2/3 增强系列

                    4/7   高性能系列 

       子型号  - 00/01/02/03/05/07

       引脚数量 - 

                 K/6 32脚   

         C/8 48脚

 R-64脚

           V-100脚

          Z-144脚

           A-168脚

           I-176脚

           B-208脚

           N-216脚    

         存储量

 6 : 32KB

            8 :  64KB

                  B : 128KB

                  C : 256KB   

            D : 384KB 

            E : 512KB 

       G : 1MB

        I : 2MB

            封装

                   U - UQFN封装

 T -  TQFP封装

           工作温度

6   -40 ~ +85 摄氏度

     4.开发套件介绍

核心板  -   处理器 + 无线通信模块(NB-IOT、Wifi、Zigbee)

 底板     -     承载各种外设接口

                             如传感器扩展口、按键、LED灯、通信接口MiniUSB、五向按键等。

配套模块

传感器 :

              执行器 :蜂鸣器、风扇、电灯、继电器

【5】ARM体系结构

   1.ARM简介

        STM32G030处理器内核架构为ARM Cortex-M0+ 。

        面试题:谈谈你对ARM的理解。

        答: 1- ARM是一家公司,ARM公司是一家芯片知识产权(IP)供应商,它与一般的半导体公司最大的不同就是不制造芯片且不向终端用户出售芯片,而是通过转让设计方案,由合作伙伴生产出各具特色的芯片。

                2 - ARM处理器,ARM处理器是英国Acorn有限公司设计的低功耗低成本的第一款RISC微处理器。

               ARM7\ARM9\ARM11

              Cortex - A : 高性能

              Cortex - R : 实时性

Cortex - M : 低功耗

              3 - ARM代表一种技术。具有性能高、成本低和能耗省的特点。在智能机、平板电脑、嵌入控制、多媒体数字等处理器领域拥有主导地位。

 Tips:目前市面上主流的架构有哪些?

          主流的四大处理器架构:ARM 、Intel x64/x86 、MIPS 、RISC-V(开源)

Tips : RISC和CISC有什么区别  ? 

案例:

    早期的CPU全部是CISC架构,它的设计目的是要用最少的机器语言指令来完成所需的计算任务。

比如对于乘法运算,在CISC架构的CPU上,您可能需要这样一条指令:

MUL ADDRA, ADDRB

就可以将ADDRA和ADDRB中的数相乘并将结果储存在ADDRA中。

将ADDRA,ADDRB中的数据读入寄存器,相乘和将结果写回内存的操作全部依赖于CPU中设计的逻辑来实现。

这种架构会增加CPU结构的复杂性和对CPU工艺的要求,但对于编译器的开发十分有利。

比如上面的例子,C程序中的a*=b就可以直接编译为一条乘法指令。

今天只有Intel及其兼容CPU还在使用CISC架构。

    RISC架构要求软件来指定各个操作步骤。上面的例子如果要在RISC架构上实现,

将ADDRA, ADDRB中的数据读入寄存器,相乘和将结果写回内存的操作都必须由软件来实现,

比如:

MOV A, ADDRA;

MOV B, ADDRB;

MUL A, B; 

STR ADDRA,A。

这种架构可以降低CPU的复杂性以及允许在同样的工艺水平下生产出功能更强大的CPU,

但对于编译器的设计有更高的要求。

2.处理器架构

     STM32F0

     STM32G0

    ● 主模块 :

          Cortex-M0+内核及先进高性能总线 (AHB bus)

          通用 DMA ( GP-DMA -- general-purpose DMA)

     ● 从模块 :

    – 内部FLASH 

    – 内部SRAM

     – APB桥,连接AHB和APB,所有的外设都挂在APB总线上

    -  G0: GPIOx直接挂在IOPORT总线上。

       - F0 :   专门用于连接GPIO口的AHB2总线

Tips:AHB和APB的区别?

    AHB是高速总线,是一种系统总线,它主要负责连接处理器、DMA等一些内部接口。

    AHB系统由主模块、从模块和基础结构3部分组成,整个AHB总线上的传输都由主模块发出,由从模块负责回应。

    APB是低速总线,它主要负责连接外围设备,它又分为APB1和APB2,

它的总线架构不像 AHB支持多个主模块,在APB里面唯一的主模块就是APB桥。

3.Cortex-M0内核架构

 Cortex-M 系列产品线

Cortex-M 系列产品主要包括 Cortex-M0、Cortex-M1、Cortex-M3、Cortex-M4、Cortex-M7 等,其中 Cortex-M0 主打低功耗和混合信号的处理,M3 主要用来替代 ARM7,重点侧重能耗与性能的平衡,而 M7 则重点放在高性能控制运算领域。

  Cortex-M0结构框图

    Cortex-M0 微处理器主要包括处理器内核、嵌套向量中断控制器(NVIC)、调试子系统、内部总线系统构成。

   Cortex-M0 微处理器通过精简的高性能总线(AHB-LITE)与外部进行通信。 

 Cortext-M0特性

  • 采用Thumb指令集 (ARM指令是32位的,而Thumb指令时16位的,如果存储空间中可以放32条ARM指令,就可以放64条Thumb指令,因此在存放Thunb指令时,代码密度高)
  • 高性能,使用ARMv6-M的体系架构;
  • 中断数量可配置1-32个,4级中断优先级   00 01 10 11 
  • 门电路少,低功耗。中断唤醒控制器(WIC),支持极低功耗休眠模式。
  • 兼容性好,与Cortex-M1 处理器兼容,向上兼容 Cortex-M3 和 Cortex-M4 处理器 ,可以很容易地升级、移植。
  • 支持多种嵌入式操作系统,也被多种开发组件支持 FreeRTOS

 Cortex-M0工作模式

 线程模式(Thread Mode)- 芯片复位后,执行用户程序

 处理模式(Handler Mode)- 当处理器发生了异常或者中断,处理完成后返回线程模式。

     Cortex-M0工作状态

 Thumb状态:正常运行时处理器的状态

 调试状态:调试程序时处理器的状态

   Cortex-M0的寄存器

   通用寄存器

      R0-R12:13个通用寄存器。其中 R0-R7为低端寄存器,可作为16位或32 位指令操作数,R8-R12为高端寄存器,只能用作32位操作数

      R13:栈指针寄存器 SP(the stark pointer),Cortex-M0 在不同物理位置上存在两个栈指针,主栈指针 MSP,进程栈指针 PSP。

          在处理模式下,只能使用主堆栈,在线程模式下,可以使用主堆栈也可以使用进程堆栈。 系统上电的默认栈指针是MSP。这样设计的目的是为了在进行模式转换的时候,减少堆栈的保存工作。同时也可以为不同权限的工作模式设置不同的堆栈。

      R14:链接寄存器LR(the link register),用于存储子程序或者函数调用的返回地址

      R15:程序计数器PC(the program counter register)存储下一条将要执行的指令的地址。

      特殊寄存器

xPSR:组合程序状态寄存器,该寄存器由三个程序状态寄存器组成

      应用PSR(APSR):保存程序计算结果的状态标志  N负数标志 Z零标志 C进位借位标志 V溢出标志

      中断PSR(IPSR):包含当前ISR的异常编号

      执行PSR(EPSR):包含Thumb状态位

      CONTROL:控制寄存器

      控制处理器处于线程模式时,使用哪个堆栈

        =0,使用MSP 处理器模式时,固定使用MSP

        =1,使用PSP 

 Cortex-M0的中断和异常

    Cortex-M0 处理器最多支持32个外部中断(通常称为 IRQ)和一个不可屏蔽中断(NMI),另外Cortex-M0还支持许多系统异常(Reset、HardFault、SVCall、PendSV、SysTick),它们主要用于操作系统和错误处理

Tips:Thumb指令集和ARM指令集的区别?

 Cortex-M0的指令集

    ARM处理器支持两种指令集:ARM 和 Thumb。

    EPSR寄存器的T标志位负责指令集的切换,Cortex-M0只支持Thumb指令。

    ARM指令集 32位精简指令集; 指令长度固定;

    降低编码数量产生的耗费,减轻解码和流水线的负担;

Thumb指令集

Thumb指令集是ARM指令集的一个子集;

指令宽度16位;

与32位指令集相比,大大节省了系统的存储空间;

Thumb指令集不完整,所以必须配合ARM指令集一同使用。

【6】开发环境搭建

  1. STM32CubeMX

   ST公司出品

工具链接 https://www.st.com/zh/development-tools/stm32cubemx.html

 STM32CubeMX是一种图形工具,通过分步过程可以非常轻松地配置STM32微控制器和微处理器,以及为Arm® Cortex®-M内核或面向Arm® Cortex®-A内核的特定Linux®设备树生成相应的初始化C代码。

     工程项目搭建和配置

     直观选择微控制器、

     图形化引脚功能配置、引脚冲突提示

     动态配置时钟树

     动态设置参数和初始化

   2.Keil安装

     Keil μVision 5 也称MDK-ARM、Realview MDK

      MDK = Microcontroller Development Kit

 MDK包含以下几个部分:

 μVision5:一种集成开发环境,提供了多种不同的功能,如编辑器、编译器、调试器等。

     ARM编译器:一种嵌入式ARM C / C++编译器,可在多种不同的微控制器平台上运行。

     Device Family Pack:一种特定于属于不同微控制器平台/系列/型号的软件包,包括库文件、设备描述文件等。

     Debugger:一款高级调试器,支持多种不同的调试功能,如单步调试、断点调试、内存映射等。

【7】创建STM32工程

主界面

 新建工程

芯片选择界面

引脚功能配置界面

时钟树配置界面

工程配置界面

生成代码

打开工程

 

工程路径下找到KEIL工程

KEIL工程中包含的文件

 

编译

 

 

下载

下载完成后,按复位键重新上电

 

 

 

 

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

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

相关文章

P1772 [ZJOI2006] 物流运输

题目提供者 洛谷 难度 提高/省选- 题目描述 物流公司要把一批货物从码头 A 运到码头 B。由于货物量比较大,需要 n 天才能运完。货物运输过程中一般要转停好几个码头。 物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟…

20230516使用python3确认三门问题

最烧脑的悖论,意识为什么会影响未来?颠覆你认知的三门问题播报文章 小红虾实验室 2023-04-09 06:08 四川 好看视频优创联盟,优质科学领域创作者 关注 对于懂概率的人来说,他中大奖的概率将成倍增加,甚至获奖率能够达到100%。 今…

【量化交易笔记】6.布林带的实现

上一讲介绍A股移动平均值(MA)指标,本讲我们来讲解布林布的实现。 布林线(BOLL)技术指标简介 布林线(Bollinger Bands,BOLL)又称布林带,是约翰布林(John Bol…

dbForge Studio for SQL Server Crack

dbForge Studio for SQL Server Crack 增加了对源代码管理中的数据操作语言(DML)触发器排序的支持。 添加了对不使用EXEC/EXECUTE关键字调用过程/函数的语法支持。 在语法检查中添加了对EXEC命令的支持。 dbForge Studio for SQL Server是一个IDE,用于SQL Server中的…

抖音本地生活服务商贴牌小程序

作为社交电商平台的一部分,抖音本地生活服务的市场前景非常广阔。以下是抖音本地生活服务商市场前景的几个方面: 巨大的用户群体:抖音拥有数亿的用户,这些用户中有很多人需要本地生活服务,如美食、酒店、旅游等&am…

对话三维家创始人蔡志森:AIGC让家装从“填空题”变成了“选择题”

(图片来源:Pixels) 三维家讲透了一个道理:数字化企业如何利用已有优势构建AGI能力。 数科星球原创 作者丨苑晶 编辑丨大兔 AIGC火热半年有余,人们已对ChatGPT不再陌生。 从互联网巨头再到上一代AI企业,…

TiKV 新架构:Partitioned Raft KV 原理解析

作者:徐奇 TiKV 推出了名为“partitioned-raft-kv”的新实验性功能,该功能采用一种新的架构,不仅可以显著提高 TiDB 的可扩展性,还能提升 TiDB 的写吞吐量和性能稳定性。 在上一篇文章中,我们介绍了 Partitioned Raf…

就业内推 | 中国移动招网工,有云计算认证的看过来

01 中移集成 🔷招聘岗位:云网络工程师 🔷职责描述: 1、具有云网项目售前工作经验,精通云网络架构和技术原理;熟悉国内主流云厂商阿里云、腾讯云等整体架构和产品体系。 2、具备一定的云网项目交付能力&…

【追梦之旅】——栈居然还能这样玩?!+ 力扣 - 有效括号

【追梦之旅】——栈居然还能这样玩?! 力扣 - 有效括号 ~😎 前言🙌什么是栈?栈的C语言实现头文件编写源码:功能文件编写源码:测试文件编写源码: 力扣题解——有效的括号 总结撒花&…

从C出发 33 --- 自定义数据类型(中)

struct 结构体类型的本质是 数据类型 ,既然是数据类型,就是用来创建变量,而创建的这个变量其实是 变量的集合,是结构体里面成员变量的集合 struct Test {int a,b;}; struct Test tt.a 1; t.b 2;//意味着,结构体变…

数据结构学习记录——图的遍历(深度优先搜索、广度优先搜索、为什么需要两种遍历、图不连通怎么办)

目录 深度优先搜索 概念 图解过程 伪代码 时间复杂度 具体代码(C语言) 广度优先搜索 概念 图解过程 伪代码 时间复杂度 具体代码(C语言) 为什么需要两种遍历 图不连通怎么办 连通 路径 回路 连通图 连通…

FreeRTOS(2)----任务管理

一,任务的基本概念 FreeRTOS是一个支持多任务的操作系统,多个任务可以共享一个优先级,当任务configUSE_TIME_SLICING 为 1,则可以使用时间调度的方式共享处理器。 简而言之,freertos任务就是一系列任务的集合。 二&…

day05_Java中的运算符

在Java中提供了丰富的运算符 其按照功能分:算术运算符、赋值运算符、比较运算符、逻辑运算、条件运算符按照操作数个数分:一元运算符(单目运算符)、二元运算符(双目运算符)、三元运算符 (三目…

python 元类

目录 元类type介绍使用元类创建类直接使用type继承type 类和对象的创建过程元类有什么用使用元类实现一个单例模式 元类type介绍 我们知道在python中一切皆对象,即使是类,也是对象,那么类这个对象是的类是谁呢?那就是元类。 通过…

Autosar NM网络管理机制(三大三小模式切换、NM网络报文的帧格式解析、NM中用到的定时器配置)

网络管理机制 AUTOSAR网络管理机制其实十分简单,概括下来三句话: 需要通信就发网络报文,否则就停发网络报文,所有节点同睡同醒。 下图是网络管理的状态机: 网络管理包括三个模式:Network Mode、Prepare …

【指针初阶 2023516】

#include <stdio.h>int main() {int a 100;int * pa &a;//pa是专门用来存放地址&#xff08;指针&#xff09;的&#xff0c;这里的pa就被称为指针变量char* pc &a;//指针变量在32为平台下是4个字节//指针变量在64为平台下是8个字节//int arr[10];//printf(&q…

计算机图形学-GAMES101-3

一、transformation-变换 &#xff08;1&#xff09;Scale 缩放变换示意图 图形每个像素对应坐标的计算公式 写成缩放矩阵的形式 非均匀缩放 &#xff08;2&#xff09;Reflection Matrix 镜面变换示意图 图形每个像素对应坐标的计算公式 写成镜像矩阵的形式 …

阿里HR:年轻人你把握不住.....

前言 去阿里面试测试工程师&#xff0c;这里面水太深&#xff0c;什么未来规划&#xff0c;职业发展的东西都是虚拟的&#xff0c;作者还太年轻&#xff0c;没有那个经历&#xff0c;把握不住。项目只有几个&#xff0c;开心快乐就行&#xff0c;不PK&#xff0c;文明PK。 很…

文心一言 VS chatgpt (17)-- 算法导论4.1 3~4题

三、在你的计算机上实现最大子数组问题的暴力算法和递归算法。请指出多大的问题规模n0是性能交叉点一一从此之后递归算法将击败暴力算法?然后&#xff0c;修改递归算法的基本情况一一当问题规模小于 n0 时采用暴力算法。修改后&#xff0c;性能交叉点会改变吗? 文心一言&…

进程间通信(匿名管道、命名管道、共享内存)

目录 匿名管道 创建管道---pipe() 命名管道 创建FIFO FIFO 操作 用命名管道实现server&client通信 共享内存 1.创建共享内存函数shmget() 2.获得共享内存地址函数shmat() 3.删除共享内存函数shmdt() 4.共享内存控制函数shmctl() 在Linux下的多个进程间的通信机制…