嵌入式复习
题型:选择题、填空题、问答题,综合及编程题
Chapter 1 嵌入式系统概述
-
嵌入式系统的定义
内涵上,嵌入式系统是以应用为中心、计算机技术为基础,软、硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统;
外延上,把数字计算机系统分成通用计算机和嵌入式系统两大类。通用计算机是指如微型计算机(PC)、大型计算机、服务器等,除此之外的计算机称为嵌入式系统。 -
嵌入式系统的特点
嵌入式系统的特点有:很好的可靠性、很好的支持能力、功耗很低、较好的便携性、较低的成本、面向特定的应用、不具备自开发能力;
与通用计算机系统的区别:嵌入式系统通常是面向特定的应用;是将先进的计算机技术、半导体技术和电子技术和各个产业的具体应用相结合的产物;嵌入式系统的硬件和软件都必须进行高效率设计;嵌入式系统的应用软件取决于行业应用的不同;嵌入式系统与具体应用有机地结合在一起;大多数嵌入式系统本身不具备自开发能力;
-
嵌入式系统芯片,嵌入式芯片的种类,各类芯片的特点
嵌入式微控制器(MCU):
最大特点是单片化,体积大大减小,从而使得功耗和成本降低、可靠性提高,因此又称单片机;微控制器内部集成了各种必要的功能和外设,并且片上外设资源一般比较丰富,适用于控制,因此称为微控制器;
嵌入式微处理器(MPU):
由通用计算机中的CPU演变而来,只保留了与嵌入式应用密切相关的功能部件,具有功耗低、处理器结构可扩展、存储保护、调试功能丰富、支持实时多任务的特点;
嵌入式数字信号处理器(DSP):
是一种非常擅长于高速实现各种数字信号处理运算的嵌入式处理器,特点是多总线结构、流水线操作、有专用的硬件乘法器、特殊的DSP指令、多机并行运行的特性、快速的指令周期、低功耗以及更高的运算精度
嵌入式片上系统(SOC):
可编程片上系统是一种特殊的嵌入式系统:首先它是片上系统,即由单个芯片完成整个系统的主要逻辑功能;其次,它是可编程系统,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件在系统可编程的功能。 -
嵌入式系统硬件和软件的基本组成
a) 嵌入式系统硬件组成
i. 基本电路
电源、重启(Reset)电路和时钟电路
电源电路为嵌入式系统提供工作电源;重启电路主要包括上电重启电路和按钮重启电路;时钟电路用于提供标准的时钟源
ii. 存储电路
RAM主要用于存放数据;ROM主要用于存放程序
FLASH是ROM
iii. 模数转换-数模转换
由于嵌入式芯片经常需要获取传感器数据,然而传感器数据一般是模拟信号,所以需要相应的转换;AD将模拟量转换为数字量;DA将数字量转换为模拟量
iv. 其他常用接口电路
通用输入输出接口(GPIO):GPIO是I/O的最基本形式,它是一组输入引脚或输出引脚。
键盘接口:键盘的两种形式:线性键盘和矩阵键盘。
显示接口:8段数码管LED显示和LCD显示。
串行接口:串行通信是指使数据一位一位地进行传输而实现的通信。与并行通信相比,串行通信具有传输线少、成本低等优点,特别适合远距离传送;缺点是速度慢。目前常见的通信模式有UART(异步串行通信)和SPI(同步串行通信)。
总线接口:I2C总线(双向二线制半双工同步串行总线),CAN总线(控制器局域网总线),RS485总线(半双工工作方式,支持多点异步串行数据通信)。
b) 嵌入式系统软件组成
嵌入式系统软件开发的方法和流程。
i. 嵌入式裸机软件系统
嵌入式裸机软件的具体实现方式有两种:循环轮换,前后台系统
循环轮换:把系统的功能分解为若干个不同的任务,然后把它们包含在一个永不结束的循环语句当中,按照顺序逐一执行。当执行完一轮循环后,又回到循环体的开头重新执行。
前后台系统:前后台系统就是在循环轮换方式的基础上,增加了中断处理功能。中断服务程序构成前台程序,负责处理异步事件,称为事件处理级程序。后台程序一般是一个无限的循环,负责掌管整个嵌入式系统软、硬件资源的分配、管理以及任务调度,是一个系统管理调度程序,称为任务级程序。
ii. 嵌入式操作系统软件系统
利用操作系统,应用程序的开发不是直接面对嵌入式硬件设备,而是在操作系统的基础上编写,易于实现功能复杂、系统庞大的应用。嵌入式硬件之上依次分为设备驱动层、操作系统层、中间层和应用软件层,各层有各自的分工。
5. 嵌入式系统开发
a) 嵌入式系统芯片选型
能够列举出嵌入式系统芯片选型的5种依据
i. 功能:主要取决于处理器所集成的存储器的数量和外部设备接口的种类和数量;
ii. 字长:指参与运算的数的基本位数,它决定了寄存器、运算器和数据总线的位数,因而直接影响硬件的复杂程度;
iii. 处理速度:在单位时间内各类指令的平均执行条数;
iv. 工作温度;
v. 功耗;
vi. 寻址能力:取决于处理器地址线的数目;
以我的经验可以这么答:
功能(MCU还是MPU,GPIO口),处理速度,存储大小,功耗,工作温度。
b) 嵌入式系统硬件设计
嵌入式系统硬件设计主要是根据需求设计出合适硬件电路,进行PCB布线电路(各种信号走线间距遵循 3W 规则(当线中心间距不少于 3 倍线宽时,则可保持大部分电场不互相干扰,这就是 3W 规则)),然后加工,需要关注的几点为:
电源确定:确定供电的电压和电流
晶振确定:首先确定振荡频率,其次要确定晶振类型
预留测试IO口:预留一个IO口用于连接指示灯跟按钮
外扩存储设备;
屏幕;
c) 嵌入式软件开发及编译、下载(JTAG模式)
能够简要说明嵌入式从开发、编译以及下载的过程,即怎样实现从借助开发环境例如Keil MDK开发软件、以及编译到下载到芯片的整个过程。
嵌入式软件的生成过程为:编辑器编写源程序代码文件、交叉编译器编译成各个目标模块、交叉链接器和汇编器将目标模块链接成可供下载调试或固化的目标程序(二进制下载文件)下载烧写到开发板上,最后通过ARM开发板上的JTAG调试端口可以进行相关的调试。
d) 嵌入式系统及芯片应用及发展趋势
i. 嵌入式系统芯片的网络化
ii. 嵌入式系统芯片更高的集成度
iii. 嵌入式系统芯片的并行及多核化
iv. 嵌入式系统的芯片内核开发集成化
v. 嵌入式系统芯片设计的类人脑化
Chapter 2 ARM芯片及体系结构
- ARM芯片主要类别(了解)
了解主要ARM芯片,Cortex-M, Cortex-A和Cortex-R芯片的特点。
Cortex-M:
针对微控制器MCU开发的,需要进行快速的且具有高准确性的中断管理,又需要将门数跟功耗控制在最低。
Cortex-A:
具有高性能的兼容的操作系统软件的支持,性能卓越并且共享共同的架构和功能集,,因此在开放式平台之间有较高的兼容性跟可移植性
Cortex-R:
为要求可靠性、高可用性、容错功能、可维护性和实时响应的嵌入式系统提供高性能计算解决方案 - ARM处理器体系结构(了解)
Cotex-M3属于哪种体系结构?了解什么是ARM 32-bit,Thumb 16-Bit,Thumb-2,VFP:Jazelle®技术:TrustZone® 安全扩展:SIMD:NEON:Virtualization:NVIC和WIC?
Cortex-M3属于ARMv7M|ME的芯片体系结构
ARM 32-bit ISA:基于RISC(精简指令集)原理的32位ARM指令集
Thumb 16-Bit ISA:Thumb技术是对32位ARM体系结构的扩展,Thumb 指令集是已压缩至 16位宽操作码的、最常用 32 位 ARM 指令的子集。在执行时,这些 16 位指令实时、透明地解压缩为完整 32 位 ARM 指令,且无性能损失。
Thumb-2:提供最佳代码大小和性能,增强ARM微处理器内核的功能
VFP::浮点体系结构,为半精度、单精度和双精度浮点运算中的浮点操作提供硬件支持。
Jazelle®技术:是ARM提供的组合型硬件和软件解决方案,用于提高执行环境速度
TrustZone® 安全扩展:提供可信计算,是系统范围的安全方法,针对高性能计算平台上的大量应用,包括安全支付、数字版权管理 (DRM) 和基于 Web 的服务。
SIMD:扩展经过优化,可适用于众多软件应用领域,包括视频和音频编解码器,提供高级媒体和图形性能
NEON:可以加速多媒体和信号处理算法,可增强许许多多的媒体用户体验
Virtualization:随着软件复杂性的提高,对于在同一个物理处理器上提供多种软件环境的要求也同时增多。因为隔离、可靠性或不同实时特征而要求分隔的软件应用程序需要一个具备所需功能的虚拟处理器。通过高能效方式提供虚拟处理器要求组合利用硬件加速和高效的软件虚拟机监控程序。
NVIC::是 Cortex‐M 系列处理器在内核上搭载了一个嵌套向量中断控制器,它与内核有紧密的耦合。NVIC 提供如下的功能:1)可嵌套中断支持;2)向量中断支持;3)动态优先级调整支持;4)中断延迟大大的缩短;5)中断可屏蔽。
WIC:唤醒中断控制器,可以使处理器和 NVIC 处于一个低功耗睡眠的模式。 - ARM Cortex-M3
a) Cortex-M3内核特点,大致了解。
Cortex-M3是一个32位处理器内核,采用哈佛架构,拥有独立数据跟指令总线,采用三级流水线,增加了分支预测功能;
b) Cortex-M3有哪四种总线:I-Code总线,D-Code总线,系统总线和外部私有外设总线,它们的各自主要功能是什么?
I-Code总线:基于AHB-Lite总线协议的32位总线,负责在0x0000_0000–0x1FFF_FFFF之间的取指(令)操作
D-Code总线:基于AHB-Lite总线协议的32位总线,负责在0x0000_0000–0x1FFF_FFFF之间的数据访问操作
系统总线:基于AHB-Lite总线协议的32位总线,负责在0x2000_0000–0xDFFF_FFFF 和0xE010_0000–0xFFFF_FFFF之间的所有数据传送,取指(令)和数据访问都算上。
外部私有外设总线:基于 APB 总线协议的 32 位总线。此总线来负责 0xE004_0000–0xE00F_FFFF之间的私有外设访问。但是,由于此 APB存储空间的一部分已经被 TPIU、 ETM 以及 ROM 表用掉了,就只留下了 0xE004_2000–E00F_F000 这个区间用于配接附加的(私有)外设。
c) 通用寄存器 R0-R12、堆栈指针R13、链接寄存器R14和程序计数寄存器R15。
通用寄存器R0-R12:都是32位通用寄存器,用于数据操作,但是注意绝大多数16位Thumb指令只能访问R0-R7,而32位Thumb-2指令可以访问所有寄存器
堆栈指针R13:Cortex-M3拥有两种堆栈指针,支持两个堆栈,分别是进程堆栈和主堆栈,这两种堆栈都指向R13,任一时刻进程堆栈或主堆栈中只有一个是可见的。
链接寄存器R14:也称为LR,用于在调用子程序时存储返回地址,也用于异常返回
程序计数器R15:也称位PC,由于Cortex-M3内部使用了指令流水线,所以读PC返回的值是当前指令地址+4
d) 特殊功能寄存器CPSR。CPSR中包含条件码标志、中断禁止位、当前处理器模式以及其他状态和控制信息。知道当一些运算操作时,会影响条件码标志位(N,Z,C,V)怎么改变。
N:在结果是有符号的二进制补码情况下,如果结果为负数,则 N=1;如果结果为非负数,则 N=0。
Z:如果结果为 0,则 Z=1;如果结果为非零,则 Z=0。
C:其设置分一下几种情况:对于加法指令(包含比较指令 CMN),如果产生进位,则 C=1;否则 C=0。对于减法指令(包括比较指令 CMP),如果产生借位,则 C=0;否则 C=1。对于有移位操作的非法指令,C 为移位操作中最后移出位的值。对于其他指令,C 通常不变。
V:对于加减法指令,在操作数和结果是有符号的整数时,如果发生溢出,则 V=1;如果无溢出发生,则 V=0;对于其他指令,V 通常不发生变化。
Cortex-M3处理器支持两种处理器的操作模式,还支持两级特权操作。两种操作模式分别为:处理者模式(handler mode)和线程模式(thread mode)。
了解处理模式,线程模式,特权访问以及用户访问,说明ARM 体系结构采用这些模式的目的。
引入两个模式的本意是为了用于区分普通应用程序的代码和异常服务例程的代码——包括中断服务例程的代码,引入两种特权分级访问是为了提供一种存储器访问的保护机制,使得普通的用户程序代码不能意外的甚至是恶意的执行涉及要害的操作
4. 寄存器组说明
通用寄存器 R0-R12
堆栈指针R13
链接寄存器R14
程序计数寄存器R15
状态字寄存器xPSR:所有处理器模式下都可访问当前程序状态寄存器CPSR。在每种异常模式下都有一个对用的程序状态寄存器SPSR。当异常出现时,SPSR用于保存CPSR的状态,以便异常返回后恢复异常发生时的工作状态。
5. 大端格式和小端格式
知道什么是大端格式,什么是小端格式?
大端格式和小端格式都是内存中的存储存储字数据格式;
大端格式:字数据的高字节存储在低地址中,而低字节则存放在高地址中;
小端格式:与大端格式相反,低地址中存放字数据的低字节,高地址存放字数据的高字节
- 异常和中断,它们定义,以及大概说明它们区别。Cortex-M3处理器有哪些异常,知道3种;有哪些中断,知道3种。
异常:也称为内中断,是指在正常的程序执行流程中发生暂时的停止并转向相应的处理,包括系统复位、硬件故障、NMI(不可屏蔽中断)等等
中断:也称位外部中断,是指来自内核以外的事件导致的停止并转向其他服务,例如CortexM3内核自带的PendSV(可挂起的系统服务请求)、SysTick(系统滴答定时器)和与芯片外设(例如I/O)相关的外部中断
区别:中断对 Cortex-M3 核来说是来自内核的外面,来自各种片上外设或外扩的外设;而异常则是因为内核的活动产生的,即在执行指令或访问存储器时产生。 - 存储器保护单元(MPU)是什么和有什么作用。
存储保护单元可以对特权级访问和用户级访问分别施加不同的访问限制,当检测到犯规时,MPU会产生失效异常,并由相关的服务例程来分析该错误,从而可以防止用户应用程序被破坏保证系统的安全性 - ARM微处理器的指令系统
汇编指令不会超出作业范围。
熟悉汇编作业习题,掌握MOV,SUB,ADD,LDR,STR,AND,ORR,LDRB,STRB指令使用,不超出习题范围。(详见作业答案)
1)寻址方式:
知道有以下寻址方式类型,并在看到某个汇编程序时可判断具体的指令类别。
寄存器寻址:
MOV R1,R2 //将 R2 的值存入 R1
SUB R0,R1,R2 //将 R1 的值减去 R2 的值,结果保存到 R0
立即寻址:
SUBS R0,R0,#1 //R0 减 1,结果放入 R0,并且影响标志位
MOV R0,#0xFF000 //将立即数 0xFF000 装入 R0 寄存器
寄存器移位寻址:
MOV R0,R2,LSL #3 //R2 的值左移 3 位,结果放入 R0,即是 R0=R2×8
ANDS R1,R1,R2,LSL R3 //R2 的值左移 R3 位,然后和 R1 相“与”操作,结果放入 R1
寄存器间接寻址:
LDR R1,[R2] //将 R2 指向的存储单元的数据读出保存在 R1 中
SWP R1,R1,[R2] //将寄存器 R1 的值和 R2 指定的存储
基址寻址:
LDR R2,[R3,#0x0C] //读取 R3+0x0C 地址上的存储单元的内容,放入 R2
STR R1,[R0,#-4]! //先 R0=R0-4,然后把 R1 的值寄存到保存到 R0 指定的存储单元
多寄存器寻址:
LDMIA R1!,{R2-R7,R12} //将 R1 指向的单元中的数据读出到 R2~R7、R12 中(R1 自动加 1)
STMIA R0!,{R2-R7,R12} //将寄存器 R2~R7、R12 的值保存到 R0 指向的存储;(R0 自动加 1)
堆栈寻址:
相对寻址:相对寻址是基址寻址的一种变通。由程序计数器 PC 提供基准地址,指令中的地址码字段作为偏移量,两者相加后得到的地址即为操作数的有效地址。
1.运行以下程序后:
Chapter 3 STM32微控制器及最小系统
-
STM32F103rb芯片的特点和资源
例如采用什么内核,是多少位,有哪些主要接口,Flash和RAM大致有多大。
STM32:代表的是ARM Cortex-M内核的32位微控制器;
F:代表芯片子系列
103:代表增强型系列
R:代表引脚数为64脚(T:36;C:48;V:100;Z:144;I:176)
B:代表内嵌的Flash容量为128K
其他信息:内核:72MHz、单周期乘法和硬件除法;存储器为20K的SRAM;
2个12位模数转换器;7通道DMA控制器;9个通信接口;2个高级控制定时器,4个通用定时器,2个基本控制器,1个实时时钟,2个看门狗定时器和1个系统滴答定时器 -
了解系统结构
-
STM32启动设置
STM32有哪三种启动方式? -
STM32芯片下载模式
了解STM32芯片方式JTAG,SWD,Bootloader串口下载模式
STM32微控制器的下载调试系统支持两种标准:5针的JTAG端口和2针的SWD串行端口,这两种方式都需要牺牲通用的I/O口来供给调试器仿真器使用;如果采用从系统存储器启动的模式,串口是无法直接把程序下载到内置的flash里面的,需要用到ST公司的内嵌入系统存储区( flash 的 某 一 部 分 的 地 址 被 编 为0x1FFF_F000-0x1FFF_F7FF,这就是所谓的系统存储器区)的Bootloader来引导把程序下载到flash里面,这就是Bootloader串口下载模式 -
STM32最小化系统
电源、Reset和时钟电路。认识电源电路,Reset电路,时钟电路,了解STM32 芯片的时钟源种类。
电源电路:STM32F103系列微控制器采用的电源工作范围是2.0-3.6V,常规设计一般选用3.3V电源,整个电源电路还包括主电源VDD和VSS、备用电源VBAT、模拟电压VDDA
复位电路:
系统复位:按下RST键
电源复位:上电复位
备用域复位
时钟电路:(STM32 单片机既可以外接晶体振荡器作为时钟源,内部也自带 RC 振荡器,但是内部RC 振荡器比外部晶振来说不够准确,同时也不够稳定,所以在条件允许的情况下,尽量使用外部时钟源。)
高速外部时钟(HSE)
低速外部时钟(LSE)
高速内部时钟(HSI)
低速内部时钟(LSI)
锁相环倍频输出(PLL) -
低功耗模式
STM32有哪三种低功耗模式,主要特点有哪些?
睡眠模式(Sleep mode):电压调节器正常工作,Cortex-M3处理器停止运行但内部外设正常运行,PLL、HSE、HIS也正常运行;所有的 SRAM 和寄存器的内容被保留;所有的 I/O 引脚都保持它们在运行模式时的状态;功耗相对于正常模式得到降低。
停止模式(Stop mode):也称为“深度睡眠模式”。电压调节器工作在停止模式,选择性地为某些模块提供 1.8V 电源;Cortex-M3 停止运行,Cortex-M3 的内部外设停止运行;STM32 时钟 PLL、HSE 和 HIS 被关断;所有的 SRAM 和寄存其的内容被保留。
待机模式(Standby mode):整个 1.8V 区域断电;Cortex-M3 处理器停止运行,内部外设停止运行;STM32的 PLL、HSE 和 HIS 被关断;SRAM 和寄存器内的内容丢失;备份寄存器内容保留;待机电路维持供电。
Chapter4 STM32库函数及程序开发
了解STM32芯片使用哪种开发环境,库函数开发方式的优缺点。
可以使用MDK编译器、IAR编译器。
ST公司开发了库函数,使得开发人员可以脱离最底层的寄存器操作,有开发快速、易于阅读和维护成本低等有点;多了一层函数包装,程序性能有所下降
Chapter5 GPIO接口
GPIO的特点,会编写程序实现输入和输出,包括GPIO初始化,输出,输入(考试中会给出相应的库函数使用说明)。
特点:略
编程:
Chapter6 STM32中断
- 中断的特点
在内核的层次讨论问题时,“中断”都是内核以外产生的,都叫做“外部中断”;若在芯片的级别来说,例如针对STM32芯片,通过EXTI控制的那几个中断(来自引脚、RTC闹钟、USB唤醒、PVD输出),叫做“外部中断” - 中断优先级,什么抢占优先级,什么是响应优先级。
抢占属性:就是打断其他正在执行的中断,出现了中断嵌套,由NVIC_IRQChannelPreemptionPriority 的参数配置;
响应属性:如果两个中断的抢占优先级相同,并且他们同时申请中断,就由响应属性较高的中断优先处理,由NVIC_IRQChannelSubPriority 的参数配置 - 中断编程实现,会编写中断初始化程序,包括外部中断设置,中断优先级设置内容,以及中断回调处理函数实现,考试内容不超出实验和作业。(考试中会给出相应的库函数使用说明)。
Chapter7 串行通信
- 串行通信特点
串行通信(Serial communication)是指在计算机总线或其他数据通道上,每次传输一个位元数据,并连续进行以上单次过程的通信方式。特点是节省传输线,适用于远距离传送,但是数据传送效率低 - 什么是同步,什么是异步
同步和异步主要指的是接收器和发送器是否有各自的四种进行控制,同步是发送器和接收器由一个时钟源控制;异步的是接收器和发送器有各自的时钟,工作非同步
串行通信编程(USART),要求利用查询方式实现发送或接收,会配置串口通信初始化程序,以及发送和接收程序。(考试中会给出相应的库函数使用说明) - 串行通信编程(USART),要求利用查询方式实现发送或接收,会配置串口通信初始化程序,以及发送和接收程序。(考试中会给出相应的库函数使用说明)
Chapter8 定时器原理及应用
- 高级/通用定时器的特点。
略 - 通用定时器的编程:定时(定时数字设置计算),计数,捕获和PWM( PWM计算)。会编写定时器初始化部分的程序,从而实现定时功能;
同时会编写初始化定时输入和输出的程序,实现计数和PWM(考试中会给出相应的库函数使用说明)
需要会计算:根据设定的定时时间,算出初始化的一些参数配置数值;
计数###
预分频设置为0x00,不自增,Period设置为最大(或者从某个值截至)
RCC、NVIC设置与上面相同,需要注意的是TIM1由RCC2控制,2-7由RCC2控制
PWM###
PWM输出其实只是在定时Update中断时改变GPIO口电压值
根据脉宽宽度计算出具体的电压值。
PWM(Pulse Width Modulation)是通过改变方波的占空比来改变等效电压
V = 占空比 * 基准电压值
3. 滴答定时器(systic):理解其作用和功能。
这个定时器是专用于实时操作系统,也可当成一个标准的递减计数器。它具有下述特性:24 位的递减计数器、自动重加载功能、当计数器为 0 时能产生一个可屏蔽系统中断和可编程时钟源。
4. 实时时钟(RTC): 理解其作用和功能。
RTC(Real-Time Clock)实时时钟为操作系统提供了一个可靠的时间,并且在断电的情况下,RTC 实时时钟也可以通过电池供电,一直运行下去。RTC 模块之所以具有实时时钟功能,是因为它内部维持了一个独立的定时器,通过配置,可以让它准确地每秒钟中断一次。
- 看门狗定时器:看门狗的作用,什么是独立,窗口看门狗?它们有什么特点和作用?
看门狗定时器是微控制器的一个组成部分,一般是一个计数器,给定一个数字,程序运行开始倒计时,如果正常则过一段时间CPU会发出指令让看门狗复位,如果看门狗减到0就认为没有正常工作,强制让系统复位;
独立看门狗是基于一个 12 位的递减计数器和一个 8 位的预分频器,它由一个内部独立的 40kHz 的 RC 振荡器提供时钟;因为这个 RC 振荡器独立于主时钟,所以它可运行于停机和待机模式。
窗口看门狗内有一个 7 位的递减计数器,并可以设置成自由运行。它可以被当成看门狗用于在发生问题时复位整个系统。它由主时钟驱动,具有早期预警中断功能;
Chapter9 ADC原理及应用
-
ADC的特点,Vref基准电压的作用及配置方法
将模拟量转换为数字量的过程称为模式转换(A/D转换),完成这一转换的器件称为模数转换器(ADC)
Vref有两种电压:Vref+跟Vref-,分别由相关的引脚介入,为模拟参考正负极,是一个始终恒定的值(2.4V<=Vref+<=Vdda,Vref-=Vssa),在进行A/D转换的时候用来参考进行转换的电压值 -
ADC计算,会计算模拟量和数字量转换
-
ADC编程,利用查询方式实现ADC数据采集,会配置ADC初始化程序,获得采集结果,校正部分不需要。(考试中会给出相应的库函数使用说明)
int main(void){
ADC_InitTypeDef adc_init;
GPIO_InitTypeDef gpio_init;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_ADC1,ENABLE);
//将PC0配置为模拟输入
gpio_init.GPIO_Mode=GPIO_Mode_AIN;
gpio_init.GPIO_Pin=GPIO_Pin_0;
GPIO_Init(GPIOC,&gpio_init);
//通过ADC1的通道10采集滑动变阻器两端电压
ADC_DeInit(ADC1);
adc_init.ADC_ContinuousConvMode=ENABLE;
adc_init.ADC_DataAlign=ADC_DataAlign_Right;
adc_init.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;
adc_init.ADC_Mode=ADC_Mode_Independent;
adc_init.ADC_NbrOfChannel=1;
adc_init.ADC_ScanConvMode=DISABLE;
ADC_Init(ADC1,&adc_init);
RCC_ADCCLKConfig(RCC_PCLK2_Div2);
ADC_RegularChannelConfig(ADC1,ADC_Channel_10,1,ADC_SampleTime_239Cycles5);
ADC_Cmd(ADC1,ENABLE);
//ADC校准
ADC_ResetCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1));
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1));
ADC_SoftwareStartConvCmd(ADC1,ENABLE); //软件触发ADC转换
while(1){
if(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)){ //ADC采集数据完成
float voltage=3.3f/4096*ADC_GetConversionValue(ADC1); //转换为电压值
printf("%f\n",voltage); //通过串口发送给上位机
delay_moment(); //延时一段时间
}
}
return 0;
}
Chapter10 DMA方式
DMA的特点和作用?DMA与中断的区别有哪些?
Chapter11 总线通信模式
知道常用的I2C\RS485和CAN总线,知道其概念和特点。
RS485 总线在工业控制场合因其接口简单,组网方便,传输距离远等特点而得到广泛应用。RS485接口组成的半双工网络,一般是两线制(以前有四线制接法,只能实现点对点的通信方式,现很少采用),多采用屏蔽双绞线传输。
I2C 总线是由Philips公司开发的一种简单、双向二线制同步串行总线SDA(串行数据线)和SCL(串行时钟线)。它只需要两根线即可在连接于总线上的器件之间传送信息 。
CAN是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。
Chapter12 其他接口模式
对 LCD和USB接口简单了解。
LCD 接口:一般的嵌入式工程中,都会用到人机界面,随着技术的发展,LCD屏价格降低,LCD在嵌入式显示中应用越来越多。LCD接口模式众多,主要有MCU模式、RGB模式、SPI模式、VSYNC模式、MDDI模式。
USB 全速设备接口 (USB):USB,是英文Universal Serial Bus(通用串行总线)的缩写,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在PC领域的接口技术。USB接口支持设备的即插即用和热插拔功能。最新一代是USB3.1,传输速度为10Gbit/s,三段式电压5V/12V/20V,最大供电100W,新型Type C插型不再分正反
Chapter13 μC/OS-II嵌入式操作系统
uC/OS嵌入式操作系统的特点?以及和已经学过的操作系统有什么区别。 以作业题目为主。
有源代码:清晰易读、结构协调
可移植性:源码绝大部分使用ANSI C编写,便于移植到其他微处理器上
可固化:为嵌入式应用设计,具备合适工具可以嵌入产品中作为产品一部分
可裁剪:可以只使用应用程序需要的系统服务
可剥夺性:完全可剥夺型的实时内核,总是运行就绪条件下优先级最高的任务
多任务:可以管理64个任务
可确定性:绝大多数函数调用和服务的执行时间具有可确定性
任务栈:每个任务都有自己单独的栈
系统服务:提供系统服务如信号量、事件标志、消息邮箱等
中断管理:可以使正在执行的任务暂时挂起
稳定性与可靠性:得到美国航空管理局的认证
Chapter14 综合设计实例
学会简单描述一个综合实例的过程。
略

浙公网安备 33010602011771号