微控制器及应用/嵌入式微控制器 期末复习指南
本指南服务于课上老师画的知识点范围,基于授课PPT内容
期末复习看这一篇就够了,考试不考的不写,写的就是考试内容
PPT章节总览:
一、诸论
1、嵌入式微控制器及嵌入式系统
基本概念:控制、监视或者辅助操作机器和设备的装置
基本组成:嵌入式处理器、输入/输出接口,外部设备,被控设备,人机接口
嵌入式处理器:
包括:
1)嵌入式微控制器(MCU)
中央处理器、存储器、定时器/计算器、各种输入/输出接口等都集成在一块集成电路芯片上的微型计算机。
2)嵌入式数字信号处理器(DSP)
专用于(通常为实时的)数字信号处理的微处理器。
3)嵌入式微处理器(MPU)
具有较高的性能,32位以上的处理器。
4)嵌入式片上系统(SoC)
将计算机或其他电子系统集成为单一芯片,实现软硬件的无缝结合(目的低功耗/低时延高/稳定性)
2、嵌入式处理器的技术指标
1)字长:嵌入式处理器内部参与运算的数据最大位数。
2)主频:嵌入式处理器内核工作的时钟频率。单位是MHz,GHz
3)运算速度:采用单位时间内各类指令的平均执行条数的表示方法。通常是单字长定点指令平均执行速度(MIPS,DMIPS)。
4)指令集:复杂指令集CISC 和 精简(快速)指令集RISC
CISC:处理复杂功能、指令码长、多种内存寻址方式、微程序结构使用微指令控制
RISC:定长指令、指令流水线、简化的内存管理(寄存器)、硬布线、单周期执行指令、编译复杂(根据微控制器结构优化编译)
5)体系架构:
冯.诺依曼:数据和指令都存储在一个存储器中
哈佛:数据和程序独立存储
6)流水线:
别的科目学烂的知识点,po个图就行了
7) 寻址能力:由地址总线决定,32位AB寻址能力为4GB。
8)功耗:有工作功耗、待机功耗等指标。单位为mW/Hz,W/Hz
9)工作温度:民用(0~70℃)、工业用(-40 ~85℃)、军用(-55~125℃)、航天(范围更宽)
3、ARM Cortex-M3微控制器组成
二、ARM嵌入式微处理器
1、指令执行过程
2、ARM处理器特点
1)更高的能效:花小钱干大事,省电性能高
2)更少的代码:高密度指令集,功能完备,ROM/RAM/闪存要求低
3)易于使用:厂商都写好了,直接调包即可
4)更高的性能:参考苹果的MacBook或者手机的骁龙/天玑
5)更有竞争力的产品:黑鲨、小米、华为、OPPO、VIVO等等......
了解:
3、ARM 处理器
1)工作状态:
ARM状态:处理32位指令
Thumb状态:处理16位指令
调试状态:停机调试
2)工作模式:
特权模式:除用户模式以外
异常模式:除用户与系统模式以外
(码掉的是未定义模式-und)
4、ARM 寄存器
总共有37个寄存器,可以分为以下两类:
1)通用寄存器:
其中:
① 未分组寄存器:
— R0 ~R7(8 个)
— 所有模式共用这8个通用寄存器。
② 分组寄存器:
— R8 ~R12(10 个)
∗ 每个寄存器对应2个不同的物理寄存器
∗ 处理器使用 FIQ模式时,使用 R8_fiq~R12_fiq
(发生 FIQ 中断后,可以加 速 FIQ 的处理速度)
∗ 其他模式下使用 R8_usr~R12_usr
— R13 ~R14(12 个)
∗ 用户模式与系统模式共用 R13_usr,R14_usr
∗ 5 种异常模式各有各自的 R13和 R14
∗ R13 常作为堆栈指针(SP)
∗ R14 为链接寄存器(LR),在结构上有两个特殊功能:
(a) 每种模式下,模式自身的 R14版本用于保存子程序返回地址;
(b) 发生异常时,将 R14 对应的异常模式版本设置为异常返回地址(有些异常 有一个小的固定偏移量)
③ 程序寄存器(PC)R15:
— 用于控制程序中指令的执行顺序。正常运行时,PC指向CPU运行的下一条指令
— PC 的值可以改变CPU的执行流向
2)状态寄存器:
补充:
— 32 位的微处理器,ARM体系支持的最大寻址空间为4GB(字节)
— 程序正常执行时,每执行一条ARM指令,当前PC加4个字节,每执行一条Thumb 指令,当前PC加2个字节
例题:
5、判断立即数是否合法
如何判断立即数的合法性?
三、ARM指令集
1、汇编指令格式
2、寻址方式(精简版)
四、ARM 编程
分支、循环、子程序设计(大题)
牢记常用条件码
1、条件与分支
2、子程序设计
例题全部看一遍,考试就出例题改参数 :
答案:
看懂每个操作符的意义,先分解,再翻译。
五、C语言与汇编语言混编
考察:嵌入式C语言与C语言编程的不同(六点),使用文字及代码解释
速记:
(a) 数据类型尽量考虑整型;
(b) 计算符号多使用加减,少使用乘法,不使用除法。尽量采用移位运算代替乘法和除法;
(c) 变量尽量用局部变量,少使用全局变量;
(d) 子程序嵌套越少越好;
(e) 循环体多用do-while,少用for、while等结构;
(f) 子程序参数个数受限制(根据混合编程规范,不多于四个参数)。
解释:
(a)其余类型会增加代码尺寸,产生额外开销(写上int和short例子)
(b) 指令集一般不支持除法,或者没有专门指令或者乘法器,乘除法会进一步转换,增加性能开销,且移位运算比乘除法运算要快
(c)全局变量会单独申请一个地址存放数据,访问变量使用间接寻址效率低且翻译出来的指令会变多;局部变量则存放在函数堆栈中,使用SP指针+偏移量访问,效率更高
(d)调用子程序会开辟堆栈空间,嵌套层次越多堆栈空间越大
(e)while和for循环需要两个空间存放判断和循环子程序的入口地址,而do-while循环只需要一个空间存放循环/退出子程序的地址,后者开销更小
(f) 用于传递参数的寄存器数量有限,可使用R0-R3四个寄存器传递参数,更多参数则需要使用堆栈传递会增加函数调用开销
六、STM32输入输出
出两个大题考察:八种GPIO工作模式和GPIO应用:控制点亮LED灯(库函数/寄存器版)
1、GPIO工作模式
四种输入(从外部IO端口进来):
模拟输入:用于外部模拟新号输入
浮空输入:用于不确定的电平新号输入
上拉输入:上拉至高电平输入
下拉输入:下拉至低电平输入
四种输出(从片上外设模块出去再等待返回数据输入):
开漏输出:无法真正输出高电平,即高电平时没有驱动能力,需要借助外部上拉电阻完成对外驱动
开漏复用输出:可开漏亦可切换为输入模式或者其他功能
推挽(wan)式输出:可以真正能真正的输出高电平和低电平,在两种电平下都具有驱动能力
推挽复用式输出:可推挽亦可切换为输入模式或者其他功能
背图,考试画图。
补充记忆(方便记忆并不代表实际本意):
开漏输出的漏指的是MOS管的漏级
P-MOS代表Positive管,是积极的管,输出高电平
N-MOS代表Negative管,是消极的管,输出低电平
开漏输出不能输出高电平,所以没有P-MOS积极的管
推挽输出高低电平都可以输出,所以两个管都有
2、GPIO应用:点亮LED灯或者跑马灯
题干给出头文件、常用固件库函数及枚举对象,让你写出代码
其实就是一个套路:
设置系统时钟、配置IO引脚、初始化配置、IO赋值(使能高低电平)
跑马灯加个while循环和delay_ms就好了,剩下的抄题干代码即可
① 库函数版:点亮LED灯
② 库函数版:LED 跑马灯
③ 寄存器版: LED 跑马灯
补充:
注意题干给出的硬件连接图,LED必须保证电平一高一低才能亮,不要死背,灵活运用
此时IO端口PC0置低电平LED灯亮
若3V3部分变成接地(接地代表电流流向大地,则为低电平)
那么IO端口PC0则需要置高电平LED灯才能亮
SetBits为置高电平,ResetBits为置低电平
寄存器版中 (|=)为置高电平,(&=~)为置低电平
七、异常中断及编程
七种异常模式概念考其中一种,解释含义
1、异常和中断含义
2、中断类型
八、总结
大题题型(分值在60-80分):
分支、循环、子程序汇编程序设计(20分):
① 给出C代码或者需求写出汇编代码
② 给出汇编指令让对应C代码进行解释
嵌入式C语言与C语言编程的不同(文字结合必要代码解释)
GPIO八种工作模式选一种结合图示说明(需要画图并解释流程)
GPIO应用——LED灯(库函数版或者寄存器版)
七种异常模式选一种进行解释说明
小题题型:前两章
多寄存器寻址不考