嵌入式系统与应用开发
参考资料
《嵌入式系统设计与开发 第二版 中国矿业大学出版社》
成神导航
前言
个人认为嵌入式开发是比互联网软开(如Java后端开发)开发是要难一些的。Java开发基本上是用户态
的,但是嵌入式
很多东西都深入了内核态
,难度就上去了。
博主认为嵌入式的繁琐与难主要体现在以下几个方面
- 底层要求高
嵌入式偏向底层,软件、硬件都要了解与熟悉,对能力要求高了不少。 - 学习门槛高
嵌入式学习的门槛也是比较高,一是需要硬件,二是需要嵌入式专门的软件开发;学习门槛和学习成本高一些。 - 正向反馈慢
嵌入式正向反馈可能比较慢,前期学习阶段,可能会没有什么成就感就坚持不下去了。
博主小见
越往底层对人能力的锻炼就越高
,对于能力来说是在升维
。
一、学习路线
1、学习路线
2、书籍推荐
整理不易
,麻烦动动小手一键三连
哈!!!
二、《嵌入式系统设计与开发》学习
1、嵌入式系统概述
1.1 概念定义
嵌入式系统是以
应用
为中心、计算机技术
为基础
、软硬件可裁减
、适用于应用系统
对功能、可靠性、成本、功耗、体积
严格要求的专用计算机系统
。
本质是计算机系统,不过是专用计算机系统(满足应用系统特殊要求的计算机系统,特别针对某种功能
而设计
出来的)。
由此可知,嵌入式系统有两个重要特点
- 以应用为中心,不能脱离应用而存在
- 以计算机技术为基础,计算机系统由软件和硬件构成,嵌入式系统也不例外
便于开发者进行嵌入式项目开发,嵌入式系统具有交叉编译的功能。
交叉编译
- 运行在
一种计算机环境
下的编译程序
- 能够
编译
出在另一种计算机环境下运行
的代码 - 称此编译程序
支持
交叉编译
1.2 系统组成
嵌入式系统和计算机系统一样,都是由软件和硬件
组成。
- 硬件包括
微处理器
和外围设备
,其中以微处理器
为核心
- 软件包括
固件
、嵌入式操作系统
和应用程序
等
此博客主要介绍硬件的组成。
1.2.1 嵌入式微处理器
是嵌入式系统的核心
,一般只保留与用户紧密相关
的功能部件
,因此具有体积小
、重量轻、成本低
、可靠性高
等特点
- 嵌入式CPU大多数工作在为特定用户群所专门设计的系统中(专用计算机系统的定义)
- 将
通用CPU
中许多由主板
完后的任务集成
到芯片
内部,小型化
、高效率
、高可靠
两个关键词
- 专用
- 功能集成
嵌入式微处理器的分类
- 嵌入式微控制器 【早期流行 MCU】 单片机
- 嵌入式微处理器 【基于通用微处理器 EMPU】
- 嵌入式DSP处理器 【Embedded Digitial Signal Processor ,即EDSP】
实时数字信号处理器 适合执行DSP算法
- 嵌入式片上系统 【System on Chip 即SoC】
将微处理器、模拟IP核、数字IP核和存储器集成
到单一芯片
上
几款常用的嵌入式微处理器系列
- ARM系列
- MIPS系列
- PowerPC
- x86
- Motorola 68000
1.2.3 外围设备
除了
中心控制部件
(MCU、DSP、EMPU、SoC,也就是几种微处理器),其它部件
都可以算作嵌入式外围设备
。
主要有存储
、通信
、IO
、调试
、显示
5大功能部件
-
存储设备
- 静态易失型存储器
RAM、SRAM - 动态存储器
DRAM - 非易失型存储器
ROM、FLASH、EPROM、EEPROM
其中FLASH
【非易失型
存储器】凭可擦除次数多
、成本低
、速度快
、容量大
得到了广泛应用。
- 静态易失型存储器
-
通信设备
大多数的通信设备都可以直接在嵌入式系统中使用。- RS-232接口(串行通信接口)
- SPI(串行外围设备接口)
- IrDA(红外接口)
- I2C (现场总线)
- USB(串行总线接口)
- Ethernet(以太网接口)
- IO设备
- CRT(阴极射线管)
- LCD(液晶显示器)
- Touch Panel(触摸板)
1.2.3 嵌入式软件简介
嵌入式软件可以分为 固件、嵌入式操作系统和应用程序等。
- 嵌入式操作系统
- 负责
分配
、回收
、控制
和协调
全部软硬件资源的并发活动
- 提供应用程序的
运行环境
与接口
- 是应用程序
运行
的基础
- 负责
- 嵌入式应用程序
- 服务于某种
专用应用领域
- 基于某一特定的
嵌入式硬件平台
- 达到用户
预期
功能的计算机软件
- 服务于某种
目前大部分嵌入式操作系统都是实时操作系统,而且大多是实时多任务
系统(Real-Time Operating System ,即RTOS)。
简单介绍
- 当外界事件或数据
产生时
,能够接受并以足够快
的速度予以处理
,其处理的结果
又能在规定的时间之内来控制生产过程或
对处理系统做出快速响应
,调度一切可利用的资源完成实时任务
,并控制所有实时任务协调一致运行
的操作系统。 - 统的响应速度不依赖于系统任务的多少,负载的轻重,而
只依赖于优先级的设计
常用的RTOS系统
- VxWorks操作系统
- 嵌入式Linux操作系统
- Android系统
- Windows CE嵌入式操作系统
- μC/OS-II实时操作系统
1.3 特点
1.3.1 专用性
专用于特定任务
1.3.2 多支持
多类型处理器和处理器系统支持
1.3.3 成本低
通常极其关注成本
1.3.4 实时性
一般是实时性系统
1.3.5 剪裁性
可剪裁性比较好
1.3.6 可靠性
嵌入式系统的可靠性比较高。
由于部分嵌入式系统所承担的计算任务涉及产品质量、人身安全……,嵌入式系统对可靠性的要求极高。
1.3.7 功能约束
大多有功能约束。
2、ARM Cortex-M3处理器基础
ARM是嵌入式领域中使用最为广泛的32位微处理器结构。
ARM微处理的系列
- ARM7、ARM9、ARM9E、ARM10E、ARM11
- Intel的Xscale和StrongARM
- Cortex系列
自ARM11后,ARM的产品改用Cortex命名并分成M、R、A类。
2.1 优势
ARM微处理器采用RISC架构
- 体积小
- 功耗低
- 成本低
- 性能高
- 支持Thumb(16位)/ARM或Thumb-2(32位)指令集,兼容8位和16位
- 大量使用寄存器,速度快
- 数据操作在寄存器中完成
- 寻址方式简单灵活
- 指令长度固定
2.2 ARM微处理器的应用选型
2.2.1 微处理器内核
不同系列的微处理器内核结构适应不同的应用领域
示例
- 希望使用WInCE或者Linux操作系统,建议使用ARM720T以上的有MMU(Memory Mangement Unit)功能的ARM芯片
- 对成本和功耗敏感的MCU和终端应用的混合信号设备,可以考虑Cortex-M系列
- 嵌入式系统有较高的计算性能的要求的话,可以考虑Cortex-R系列
- 能效的可伸缩性比较重要的设备或者高效低功耗的移动平台,可以考虑Contex-A系列
2.2.2 系统工作频率
系统的工作频率
很大程度上决定了ARM微处理器
的处理能力
。
不同芯片对时钟的处理不同,有的芯片只需要一个主时钟频率
,有的芯片内部时钟控制器
可以为不同的部件提供不同的频率的时钟
。
2.2.3 芯片内存储器容量
到多数ARM的微处理器的芯片内部存储器的容量都不太大,很多时候需要用户在设计系统是连接外部存储器
以满足存储空间的要求。
2.2.4 片内外围电路
几乎所有的ARM芯片根据各自不同的引用领域扩展相关功能模块
,并集成
在芯片中,称为片内外围电路
。
2.3 存储器格式
ARM体系结构将存储器看做是从零开始的字节的线性组合。
32位处理器很多情况下是以字为单位进行处理的(一个字为4个字节,8位二进制代表一个字节,2位16进制代表一个字,4位8进制代表一个字,32位2进制代表一个字)
ARM为处理器支持两种方式存储字数据
- 大端模式 【
低地址存放高字节
,即字转换成字节后,左端放在低地址中,形成大端】 - 小端模式 【
低地址存放低字节
,即字转换成字节后,右端放在低地址中,形成小端】
注:大端和小端都是针对低地址
而言的,便于记忆
2.4 工作模式和工作状态
ARM Cortex-M支持两种工作模式
2.4.1 线程模式
复位时
、异常返回时
会进入此模式,其中特权模和用户(非特权)模式代码
能够在线程模式下运行。
2.4.2 处理模式
出现异常时
,微处理器进入处理模式
,在处理模式下,所有代码
都是特权
访问的。
ARM Cortex-M有两种工作状态
2.4.3 Thumb状态
Thumb状态是16位和32位“半字对齐”的Thumb和Thumb-2指令
的执行状态
2.4.4 调试状态
处理器停止
并进行调试
时所进入的状态
2.5 ARM Cortex-M3处理器组件
- 处理器
内核
(Cortex-M3 Core) - 嵌套向量
中断
控制器 NVIC - 总线矩阵
存储器保护
单元 MPU- 系统
调试组件
和调度端口
唤醒中断
控制器WIC
功能部件
的原理
及功能介绍
- NVIC
NVIC是嵌套向量中断控制器。在中断发生
时,自动取出
对应的服务例程入口地址
,直接进入
相应的服务例程,为缩短中断延迟
做出了比较大的贡献。
NVIC支持中断嵌套
,允许通过提高中断的优先级
对某个中断进行提前处理
。
微处理器使用一个可以重定位的向量表
,表中包含处理各个中断将要执行的函数的入口地址
,可供具体的中断处理器使用。在复位
时向量表
指向零
,通过编程
控制寄存器
可以使向量表重新定位到指定位置
。 - SysTick
系统滴答定时器,是一个基本的倒计时定时装置,用于在每隔一定的时间产生一个中断,即使是系统在睡眠的模式下也能够工作。 - 总线矩阵
一个AHB互联
的网络
,通过它可以让数据
在不同的总线
之间并行传送
。
2.6 ARM Cortex-M3寄存器
通用寄存器R0~R15和一些特殊功能的寄存器
其中,R0~R12
是通用目的寄存器,都可以被32位指令
访问,而大多数16位指令
只能访问 R0~R7
。
2.6.1 通用寄存器
- 低寄存器
R0~R7寄存器,可以被指定通用寄存器的所有指令
访问,复位
后的初始值不确定
- 高寄存器
R8~R12寄存器,可以被指定通用寄存器的所有32位指令
访问,复位
后的初始值不确定
- 堆栈指针
寄存器R13用作堆栈寄存器(SP)。堆栈指针对应两个物理寄存器,SP_main和SP_process,处理模式下始终使用SP_main,线程模式下可配置SP_mai或者SP_process,但在某个时刻只能看到其中的一个。 - 链接寄存器
寄存器R14是子程序的链接寄存器(LR)。在执行分支和连接
指令(BL)或带有交换的分支和链接
指令(BLX)时,LR用于接收来自PC的返回地址。LR也用于异常返回
。 - 程序计数器
寄存器R15是程序计数器
,指向当前的程序地址
。改变程序计数器的值,就能实现改变程序执行流程的目的。
2.6.2 特殊寄存器
- 程序状态寄存器
系统的处理器状态可以分为3类,因为每个处理器状态需要一个程序状态寄存器,所以有3个程序寄存器。统称为xPSR。- 应用PSR(A PSR)
应用PSR包含条件代码标志。
进入异常之前,ARM Cortex-M3处理器将条件代码标志保存在堆栈内。
用户可以使用MSR(2)和MRS(2)l指令来访问APSR。 - 中断PSR(I PSR)
包含当前的激活的异常的ISR标识。 - 执行PSR(E PSR)
包含两个重叠的区域和状态位- 可中断-可持续指令(ICI)区
用于被打断的多寄存器加载和存储指令。 - 用于If -Then(IT)指令的执行状态区
- T位(Thumb状态位)
- 可中断-可持续指令(ICI)区
- 应用PSR(A PSR)
- 中断屏蔽寄存器组
用于控制异常
的使能
和禁止
- PRI MASK寄存器(primask)
屏蔽除NMI
(不可屏蔽中断)外的所有中断 - FAULT MASK寄存器(fault )
屏蔽所有错误
,但是NMI
依然不受影响
- BASE PRI寄存器
屏蔽优先级不高于某个数值
的中断
- PRI MASK寄存器(primask)
- 控制寄存器
控制寄存器CONTROL
主要用于定义特权级别
和堆栈指针的选择
2.7 指令系统
指令系统向后兼容
- 数据传送指令
- 数据处理指令
- 跳转指令
2.7.1 数据传送指令
- MOV指令
数据传送
格式
MOV R8,R3//把R3数据传送给R8
功能
- 两个寄存器之前传送数据
- 寄存器和特殊功能寄存器之间传
- 寄存器和存储器之间传
- 把一个立即数加载到寄存器
- LDR指令
加载指令
格式
LDR Rd,[Rn,#offset] //从地址Rn+offset处读取一个字送到Rd
//延伸
LDRB …… //……字节
LDRH …… //……半字,两个字节
功能
加载指令LDR把存储器
中的内容加载到寄存器
中。
- STR指令
存储指令
格式
STR Rd,[Rn,#offset] //把Rd的低字存储到地址Rn+offset处
//延伸
STRB …… //……字节
STRH …… //……半字,两个字节
STRD Rd1,Rd2,[Rn,#offset] //把Rd1(低32位,低字)和Rd2(高32位,高字)的双字存储到地址 Rn+offset处
功能
存储指令STR把寄存器的内容存到存储器中
- 其它
MRS <gp_reg>,<special_reg> //`读`特殊寄存器到通用寄存器 读特
MSR <special_reg>,<gp_reg> //`写`通用寄存器到特殊功能寄存器 写特
2.7.2 数据处理指令
对数据的各种运算处理
- 算术运算指令
- 逻辑运算指令
- 位运算指令
- 算术运算指令
用于算术四则运算
格式
有ADD(加)、SUB(减)、MUL(乘)、UDIV/SDIV(除)这四种指令
ADD Rd,Rn,Rm; //Rd=Rn+Rm
SUB Rd,Rn.Rm;//Rd=Rn-Rm
MUL Rd,Rn.Rm;//Rd=Rn*Rm
UDIV Rd,Rn.Rm;//Rd=Rn/Rm
功能
用于算术四则运算
- 逻辑运算指令
用于逻辑运算
格式
有ADD(按位与)、ORR(按位或) 、BIC(位段清零)、 ORN(按位或反码)、 EOR(按位异或)指令
AND Rd,Rn,Rm;//Rd=Rn&Rm
OCC Rd,Rn,Rm;//Rd=Rn|Rm
BIC Rd,Rn,Rm;//Rd=Rn&~Rm
ORN Rd,Rn,Rm;//Rd=Rn|~Rm
EOR Rd,Rn,Rm;//Rd=Rn^Rm
功能
逻辑运算
- 子程序调用和无条件跳转指令
程序代码跳转
格式
B Lable //跳转到Lable对应的地址
BX reg // 跳转到由寄存器reg给出的地址
BL Lable //跳转到Lable对应的地址,并将跳转前的下条指令地址保存在链接寄存器中LR
BLX reg //跳转到由寄存器reg给出的地址,并将跳转前的下条指令地址保存在链接寄存器中LR
2.8 存储系统
ARM Cortex-M3支持4GB的寻址长度
2.8.1 存储器映射
只有一个的单一固定
的存储器映射
。
- 代码区 大小是512G\MB,用于让芯片制造上连接片上的Flash存储器
- 片上SRAM区 连接片上的SRAM,这个区通过系统总线来访问。
底部有一个1MB的位带区,该位带区还有一个对应的32MB的位带别名区,容纳了8M个位变量。位带别名区的每个字对应位带区的一个比特,32位对应1位
在使用时,真正起作用的是位带区的位,对该位的操作都可以变成对该位对应字的操作。 - 片上外设区 512MB区域由片上外设(寄存器)使用
- 片上RAM去和片外外设区 分别是两个1GB的区域,用于连接外部RAM和外部设备
- 私有外设区 大小为1MB,内核的系统控制空间就在此
- 芯片商指定区 通过系统总线访问,不允许其中有可执行的指令
2.8.2 位带操作
许多情况下,某种工作模式或者状态只需要1个二进制位来表示即可,ARM Cortex-M3 将这种位操作对应的存储单元集中
起来,构成了位带。
在程序中,可以个、访问位带别名区或者直接访问位带区来达到访存信息的目的。
位带区
:SRAM-0x20000000~0x200FFFFFF
和片内外设- 0x40000000~0x400FFFFF
位带别名区
:SRAM-0x22000000~0x23FFFFFF
和片内外设-0x42000000~0x43FFFFFF
映射公式
-
根据位带中的位计算其在位带别名区的字的地址
位带别名区中相应字的字节偏移量=【(所在字节在位带区中的地址-位带区的首地址)*8+位在该字节中的编号】*4
对位带区进行运算,求字节偏移量
片内外设
简化公式 外设位带别名区地址 = 0x4200 0000 + (A-0x40000000)X8X4+nX4
A是外设位带区某个比特 ,
n是位序号,范围是0~7
SRAM
简化公式 SRAM位带别名区地址 = 0x2200 0000 + (A-0x20000000)X8X4+nX4
A是外设位带区某个比特 ,
n是位序号,范围是0~7
位带区的首地址是0x20000000
-
根据别名区的字的地址计算位带中的位的位置
需要计算出所在字节的地址和位在该字节的编号
位编号=(字的地址-位带别名区首地址)/4
首地址为0x42000000
字节偏移量 =取整(位编号/8)
位在字节中的序号 字节内序号=位编号-字节偏移量*8
字节绝对地址=字节偏移量+位带首地址
-
直接访问别名区
向位带别名区写入一个字与对位带区对应的位所在的字执行【读-修改-写】的操作具有相同的作用
写入别名区的字的第0位决定了写入位带区的目标位的值,提高效率 -
直接访问位带区
能使用常规的读和写操作对该区域进行访问
2.9 异常及其处理
当正常的程序执行流程发生暂时的停止时,称为异常。
处理异常之前,当前处理器的状态必须保留。
- ARM Cortex-M3内核所产生的异常
- (在硬件支持下)外部事件导致的程序流程中断
前者称为内部异常,后者称为外部中断。
对于内部异常
,在指令执行和访问存储器时产生,是可以预知的,对于ARM Cortex-M3内核来说是同步
的。
对于外部中断
,相应事件的发生是不可预知的,对于内核来说是异步
的。
- ARM Cortex-M3处理异常的特性
- 自动的状态保存和回复
- 优先级屏蔽支持临界区
- 自动读取代码存储器和SRAM中包含ISR地址的向量表入口
- 支持末尾连锁,在末尾连锁中,处理器在两个ISR之间没有对寄存器进行出栈和压栈操作的情况下处理背对背中断
- 中断优先级可动态重新设置
- ARM Cortex -M3和NVIC之间采用紧密耦合接口
- 中断数目可以配置为1~240
- 中断优先级的数目可以配置为1~8位
- 处理模式和线程模式具有独立的堆栈和特权等级
- 使用C/C++标准的调用规范
2.9.1 异常优先级
异常的优先级数值越小
,则优先级越高
。
- 优先级可以分为
占先优先级
和次优先级
2.10 SysTick定时器
- 工作原理
当SysTick定时器从1计到0时,它将把控制和状态寄存器STCSR中的COUNTFLAG位置位。- 读取SysTick控制和状态寄存器(STCSR)
- 往SysTick当前值寄存器(STCVR)中写任何数据
- 功能
定期产生异常请求
,周期性的异常请求可以作为系统的时间基准。
2.11 STM32 的时钟源和时钟树
2.11.1 时钟源
STM32支持多种内部和外部时钟源,任何一个都可以独立开启或者关闭,以优化芯片的能耗
- HSE 高速外部时钟 8MHz
- LSE 低速外部时钟 40kHZ
- HSI 高速内部时钟
- LSI 低速内部时钟
- PLL 锁相环时钟
HSE(高速外部时钟)
和HSI(高速内部时钟)
可以作为PLL(锁相环时钟)
的输入
,形成PLL时钟源
的输入。
2.11.2 时钟树
每一个外设模块在这些寄存器中有相应的时钟使能位
,当该位为1
时,对应的时钟开启
且相应的外设开始工作
,当该位为0
时,对应的时钟关闭
从而相应的外设停止工作
。
3、开发环境
后续整理
4、STM32-A开发基础
4.1 通用端口控制
STM32 的通用输入/输出
(GPIO
)端口可以驱动LED
、产生PWD
、驱动蜂鸣器
等。
STM32F103VBT6总共有5组输入/输出(GPIO)端口,分别是GPIOA、GPIOB……GPIOE,每组IO口有16个IO,一共有16*5=80个IO端口。
每个端口可通过的最大电流是25mA,建议单个端口最好不要超过10mA。
特点
- 通用的输入/输出
- 单独的位设置或者位清除
- 所有端口都有外部中断能力
- 复用功能
- 软件重新映射IO复用功能
- GPIO锁定机制
使用IO口可以把软件配置成8种模式- 输入浮空
- 输入上拉
- 输入下拉
- 模拟输入
- 开漏输出
- 推挽输出
- 推挽式复用
- 开漏复用
每个IO口有7个相关寄存器来控制
- 配置模式的2个端口配置寄存器CRL和CRH
- 2个32位的数据寄存器IDR和ODR
- 1个32位的置位复位寄存器
- 1个16位复位寄存器BRR
- 1个32位的锁存寄存器LCKR
常用的IO端口寄存器只有4个:CRL\CRH\IDR\ODR
- CRL
控制着每个IO端口(A~G)低8位的模式
每个IO端口占用CRL的4个位
其中高2位为CNF
低2位为MODE
- CRH
作用和CRL完全一样
控制着每个IO端口高8位的模式- 常用模式
- 0x4 模拟输入
- 0x3 推挽输出(做输出口用,50M速率)
- 0x8 上/下拉输入
- 0xB 复用输出
- IDR 端口输入数据寄存器
只读寄存器
,对应16个IO
(一组IO口)- 以
16
位形式读出 - 要知道某个IO口的状态,只要读这个寄存器,再看
某个位的状态
就行
- ODR端口输入数据寄存器
可读写
- 读出来的数据可以用于判断当前IO口的
输出状态
4.1.1 GPIO的位带操作
- 位操作
或1置1,与0置0
AHB1ENR |= 1<<2;
1<<2 应该读作1向左移动2位,即AHB1ENR寄存器的第2位置1。
MODER &= ~(3<<(11*2));
- 位带操作
STM32的寄存器都是32位的,如果想要“精确”访问某个寄存器的某一位,则可以将32位
的每一位都映射为一个地址
,对寄存器的某一位的读-修改-写操作可以简化为把字
直接写入位带别名区对应地址
4.2 按键与中断
CM3内核支持256个中断,其中包含16个内核中断
和240个外部中断
STM32有84个中断,其中包括16个内核中断
和68个可屏蔽中断
键盘扫描方式有交叉扫描
和直接扫描
中断分组设置表
4.3 串行接口程序设计
4.3.1 串行通信原理
- 数据
按位顺序
进行传输,将传输的数据的每个字符一位一位的传输 通用异步收发传输器
(UART)是目前广泛使用的一种通用串行数据通信接口- 处理器可以通过
数据总线
向UART的控制寄存器写入控制字
,对UART进行初始化
。 发送器
从处理器接收
并行数据,然后通过移位寄存器
把数据以串行异步
方式发出。接收器
可以从串行通信链路
接收串行数据,用移位寄存器
转换成8位并行数据
,送往接收寄存器
,等待处理器读取
。- 处理器也可以通过
读取UART状态寄存器
的信息获得当前UART的状态
并由此产生相应的控制逻辑
。
4.4 模/数转换器
模数转换器(ADC)是将连续变化的模拟信号
转换为离散的数字信号
的器件。
4.4.1 原理
通常的模数转换器
是把经过与标准量比较处理后
的模拟量
转换成以二进制数值
表示的离散信号的
转换器。故任何一个模数转换器都需要一个参考模拟量
作为转换的标准,比较常见的参考标准为最大的可转换信号大小
。而输出的数字量则表示输入信号相对于参考信号的大小。
4.5 定时器和看门狗
看门狗(WDT)是嵌入式系统中的一个重要组成部分,实际上是一个计数器
。
4.5.1 原理
- 给看门狗一个数字,程序开始运行后看门狗开始
倒计数
- 如果程序运行正常,过一段时间
CPU发指令
给看门狗让其复位
重新
开始倒计数
- 如果看门狗计数器
倒数到0
就认为程序没有正常工作
,强制复位系统
- 看门狗对嵌入式系统提供了
独立的保护功能
,当系统出现故障时,在可控的时钟周期
内,看门狗将系统复位
或者将系统从休眠中唤醒
- 看门狗的时钟是
内部RC时钟
,并不是准确的40kHZ
三、考试心得
只能说这份卷子我圧对了部分题,但是选择题可以说考的比较偏,比如哪些是ACD器件,哈佛结构和冯诺依曼结构的区别,其它还好,只是有点可惜,自己着重看的它没咋考。
简答题难度较低,都大差不差的答出来了。可是程序题,有一部分没压对,其实还好。也是对自己基础的一个警醒。
论述题格局打开,构想了一个集Aiot和5G技术的沉浸娱乐型无人驾驶汽车。集无人驾驶、情绪感知、虚拟沉浸为一体的智能车。
如果能够到达贾维斯时代,那该多好呀。