Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说嵌入式系统原理课后习题练习,希望能够帮助你!!!。
(答案仅供参考,不喜勿喷~~)
(本人比较懒,后面的就没仔细整)
(注:如果你完成了我的“太懒啦”,我可以把你的加进去,附上你的名字,一起加油~~)
1、 什么是嵌入式系统?他和人们日常使用的 PC 有什么区别和联系?
答:
(1) 以应用为中心,计算机技术为基础,软硬件可裁减,从而能够适应实际应用中对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
(2)
①嵌入式系统是专用的计算机系统,而PC是通用的计算机系统。
②技术要求不同,通用PC追求高速、海量的数据运算;嵌入式要求对象体系的智能化控制。
③发展方向不同,PC追求总线速度的不断提升,存储容量不断扩大;嵌入式追求特定对象系统的智能性,嵌入式,专用性。
2、 列举嵌入式系统的主要特点。
答:
专用性、可裁剪行、实时性、可靠性、具有较长的生命周期、不易被垄断。
3、 比较嵌入式微处理器 MPU 和嵌入式微控制器 MCU 之间的区别和联系。
答:
(1) (MPU)嵌入式微处理器以通用处理器(CPU)为基础。将微处理器装配在专门设计的电路 板上,只保留和嵌入式应用有关的功能;外接电路必须包括 ROM、RAM、总线接口、各 种外设等器件。
(2)(MCU)嵌入式微控制器又称单片机,是将整个计算机系统浓缩集成到一块芯片中。一般 以某一种微处理器内核为核心,芯片内部集成 ROM/EPROM、RAM、总线、总线逻辑、 定时/计数器、看门狗、I/O、串行口、脉宽调制输出、A/D、D/A、Flash 等各种必要功能和外设。
4、 什么是冯诺伊曼结构?什么是哈佛结构?
答:
(1)冯诺伊曼体系结构:指令和数据不加以区分,都通过数据总线进行传输。因此,指令读 取和数据访问不能同时进行,数据吞吐量低,但总线数量相对较少且管理统一。大多数通用计算机的处理器(如 Intel X86)和嵌入式系统中的 ARM7 处理器均采用冯诺依曼结构。
(2)哈佛体系结构:指令与数据分开存储在不同的存储空间,使得指令读取和数据访问可以 并行处理,显著提高了系统性能,但需要较多数量的总线。大多数嵌入式处理器都采用哈佛结构。
5、 简述嵌入式 I/O 接口的功能、组成和编制方式。
答:
(1)功能:嵌入式 I/O 接口连接和控制嵌入式 I\O 设备,负责完成嵌入式处理器和嵌入式 I\O 设备间的信号转换、数据传输和速度匹配。
(2)组成:寄存器(数据寄存器、控制寄存器、状态寄存器)、I\O 控制逻辑部件、外设接口 逻辑。
(3)编制方式:为寄存器指定端口地址的方法被称为 I\O 接口的编制方式,一般来说 I\O 接 口编制方式有统一编址和独立编址。
6、 无操作系统的嵌入式软件主要有哪几种实现方式?
答:
循环轮询系统、前后台系统。
7、 什么是引导加载程序?它的主要功能是什么?
答:
引导程序一般由汇编语言编写,在嵌入式系统上电后运行,完成自检、存储映射、时钟系统 和外设接口配置等一系列硬件初试化工作。
8、 列举嵌入式系统的主要分类?
答:
(1)按硬件划分:根据嵌入式处理器的字长,可分为 4,8,16,32,64 位嵌入式系统。
(2)按软件复杂度划分:无操作系统控制、小型操作系统控制、大型操作系统控制的嵌入式 系统。
(3)按实时性划分:非实时嵌入式系统、硬实时嵌入式系统、软实时嵌入式系统。
9、 列举嵌入式系统的主要应用领域。
答:
国防军事、工业控制、消费电子、办公自动化产品、网络和通信设备、汽车电子、金融商业、 生物医学、信息家电。
1、 概述嵌入式系统的开发环境。
答:
嵌入式系统的开发环境称为交叉开发环境,有宿主机、目标机以及它们之间的连接构成。 首先,在宿主机上建立开发环境,进行应用程序编写和交叉编译,然后,在宿主机和目标机之间建立连接,将应用程序下载到目标机上进行交叉调试最后,将应用程序固化到目标机中实际运行。
2、 简述嵌入式软件开发工具的构成。
答:
编辑器、编译器、链接器、调试和下载工具。
3、 列举目前常用的嵌入式软件集成开发工具。
答:
KEIL MDK、IAR EWARM。
4、 嵌入式调试方式有哪些? 答:
软件模拟器、ROM 监控器、ROM 仿真器、在线仿真器、片上调试
5、 什么是 JTAG?它属于哪种嵌入式调试方式?简述 JTAG 接口的引脚定义。
答:
(1)JTAG 是一种关于测试访问和边界扫描结构的标准,用于芯片内部测试及对程序进行调试、 下载。
(2)片上调试
(3)JTAG 接口的引脚定义包括 TCK、TDI、TDO、TMS、nTRST。
6、 目前常用的嵌入式软件开法语言有哪些?他们分别具有什么特点?
答:
汇编语言、C 语言、Java 语言
(1)汇编语言:对底层设备操控性好、效率高但编程复杂功能有限、可读性、可移植性差。
(2)C 语言:语言简洁紧凑,使用方便灵活、表达能力强代码质量高、执行效率高等。
(3)Java 语言:面向对象、解释性、平台无关、分布式、健壮、安全、动态、支持多线程。
7、 嵌入式系统的开发过程可以分为哪几个阶段?
答:
需求分析、系统规划、系统实现、系统测试、系统发布
1、 简述 ARM 处理器家族的发展史。
答:
ARM 公司继 ARM7、ARM9、ARM11 之后,推出新一代处理器 ARM Cortex。
2、 ARM Cortex 处理器分为哪几个系列?每个系列又分别面向哪些应用场合?
答:
(1)Cortex-A:面向高端的基于虚拟内存的复杂操作系统应用。
(2)Cortex-R:面向实时领域的应用。
(3)Cortex-M:面向低成本低功耗的传统单片机应用场合。
3、 详述 ARM Cortex-M3 处理器的构成。
答:
ARM Cortex-M3 处理器由 Cortex-M3 内核和调试系统构成,Cortex-M3 内核主要由 core 中央 处理器核心、NVIC 嵌套向量中断控制器、SYSTICK 系统定时器、MPU 存储保护单元和总线矩 阵等组成。调试系统包括停机和调试监控器两种模式、指令断点、寄存器、存储访问以及性 能分析此外还具有指令跟踪、数据跟踪、调试信息跟踪。
4、 ARM Cortex-M3 处理器的总线接口有哪些类型?
答:
主要有 I-Code 总线、D-Code 总线、系统总线、外部私有外设总线和调试访问端口总线 DAP。
5、 ARM Cortex-M3 处理器有几种工作状态?支持哪些数据类型?
答:
两种工作状态:Thumb 状态和调试状态。 数据类型:字(32b)、半字(16b)、字节(8b)
6、 详述 ARM Cortex-M3 的寄存器及其主要用途。
答:
(1)通用寄存器(R0~R12):数据操作。
(2)堆栈指针寄存器(SP):用作堆栈指针。
(3)链接寄存器(LR):调用子程序时保存返回地址。
(4)程序计数器(PC):用于存放下一条执行的指令地址。
(5)特殊功能寄存器组:预定义的功能。
7、 概述 ARM Cortex-M3 处理器的两种操作模式及其切换机制。
答:
线程模式和处理者模式,异常产生使中断用户应用程序执行从线程模式切换到处理者模式, 执行异常服务程序,异常返回,由处理者模式切换到线程模式,继续执行被打断的用户应用 程序。
8、 异常和中断有什么联系和区别?ARM Cortex-M3 处理器最多能支持多少种异常?他们的 优先级是如何规定的?
答:
(1)在 ARM 中凡是发生打断程序正常执行流程的事件,都被称作异常。中断是一种特殊的 异常且是异步事件,异常还包括同步事件。
(2) ARM Cortex-M3 处理器最多能支持 240 种异常。
(3) 优先级通过抢占优先级和子优先级划分。
9、 假设 ARM Cortex-M3 处理器要将以下数据以小端格式写入存储器,依次写出实现以下功 能的 C 语句,并画出这些数据在 ARM 存储器中的存储空间分布图:
(1) 大写字母’E’存放在地址 0x20000400 上。
(2) 双字节数据 0xEF0 存放到地址 0x2000012C 上。
(3) 四字节数据 0XA1234 存放到地址 0x20000034 上。
(1)
char *p =(char *)0x2000 0400;
*p='E';
(2)
shot *p =(short int *)0x2000 012C;
*p=0xFE0;
(3)
long *p=(long *)0x2000 0034;
*p=0xA1234;
1、 简述 ARM Cortex 内核与基于 ARM Cortex-M3 内核的微控制器之间的区别和联系。
答:
ARM Cortex 内核是 ARM 公司设计,而基于 ARM Cortex 内核的微控制器是各大厂商根据 ARM 公司的内核,设计各具特色的微控制器。其中 MPU 由 ARM Cortex 内核、调试系统、内部总 线、外设、存储器、时钟复位、IO 等封装而成。(MCU=CPU+RAM/ROM+I/O)
2、 简述 STM32 系列微控制器的适合场合、命名规则和主要产品线。
答:
(1)适合场合:
替代绝大部分 10 元以上的 8/16MCU 的应用 替代目前常用的 32 位 MCU(ARM7)的应用 小型 OS 相关的应用 简单图形和语音相关的应用
(2)命名规则: 名称主要有以下部分组成产品系列名、产品类型名、产品子系列名、引脚数、Flash 存储器 容量、封装方式、温度范围。
(3)主要产品线: 产品线包括高性能、主流、超低功耗三大类,分别面向不同的应用。
3、 目前微控制器的开发方法主要有哪些?
答: 寄存器开发、库函数开发、中间件开发
4、 STM32F103 微控制器的主系统由哪几部分构成?画出 STM32F103 微控制器的系统结构图。
答:
主系统由 4 个主动单元和 4 个被动单元构成,它们彼此之间通过一个多级的 AHB 总线架构 相互连接。其中 4 个主动单元包括 Cortex-M3 内核数据总线和系统总线、通用 DMA1 和通用
DMA2,4 个被动单元包括内部 SRAM、内部闪存存储器、FSMC 和连接所有 APB 设备的 AHB
到 APB 桥。P138 (图 4-6)
5、 画出 STM32F103 微控制器的存储器映射图。
答:P108(图 3-20)
6、 什么是微控制器的最小系统?它通常由哪几部分组成?
答:
(1)一个微控制器的最小系统是指使为控制器正常工作所需的最少原件。
(2)通常由微控制器芯片、电源电路、时钟电路、复位电路、调试和下载电路等部分组成。
7、 简述 STM32F103 微控制器的供电方案。
答:
(1)主电源 VDD(必需)
(2)实时时钟和一部分备份寄存器的电源 VBAT(可选)
(3)ADC 模块所需的参考电压 VREF+和 VREF-(可选) 其中每个电压供应引脚都需要至少一个去耦电容
8、 STM32F103 微控制器集成了标准 ARM CoreSight 调试端口 SWJ-DP,它有两种不同的端口: JTAG-DP 和 SW-DP。相比 JTAG-DP,SW-DP 有什么优势?
答:
SW-DP 串行线调试端口,占用的引脚比较少,为 AHP-AP 模块提供 2 针(时钟+数据)接口。
9、 STM32F103 微控制器有哪些时钟源?
答:
高速外部时钟、高速内部时钟、低速外部时钟、低速内部时钟
10、STM32F103 微控制器 AHB 高速总线时钟 HCLK、APB2 外设总线时钟 PCLK2 和 APB1 外设 总线时钟 PCLK1 分别给哪些模块提供时钟信号?当 STM32F103 微控制器复位后,他们默认 的工作频率分别是多少?
答:P156
(1)高速总线 AHB 时钟(HCLK):为 Cortex-M3 内核、存储器、DMA 提供时钟信号,72MHz。
(2) APB2 外设总线时钟(PCLK2):为挂载在 APB2 总线上的外设提供时钟信号,72MHz。
(3) APB1 外设总线时钟(PCLK1):为挂载在 APB1 总线上的外设提供时钟信号,36MHz。
11、STM32F103 微控制器有哪些低功耗模式?他们各自有什么特点?如何进入和退出这些低 功耗模式?
答:
(1)睡眠模式:内核停止工作,外设还在继续工作。CPU 停止运行、PLL 关闭、关闭除唤醒 内核的外设外其他所有外设时钟。当内核遇到 WFE 或 WFI 指令进入睡眠模式,直到某个外 设产生事件或中断请求,退出睡眠模式。
(2)停机模式:睡眠模式的基础上,所有外设时钟都被关闭。CPU 停止运行、PLL、HIS、HSE、 关闭、关闭所有外设时钟、调压器低功耗模式。先设置电源控制寄存器 SLEEPDEEP 位置位、 PDDS 清零,一旦遇到 WFE 或 WFI 指令,进入停机模式。通过 EXTI 信号唤醒。EXTI 信号可 以是 16 个外部 I\O 引脚之一、PVD 的输出、RTC 闹钟或 USB 唤醒信号。
(3)待机模式:最低的电能消耗。CPU 停止运行、PLL、HIS、HSE、关闭、关闭所有外设时钟、 调压器关闭。先设置电源控制寄存器 SLEEPDEEP 位置位、PDDS 置位,一旦遇到 WFE 或 WFI 指令,进入待机模式。退出条件是 NRST 引脚上的外部复位信号、IWDG 复位、WKUP 引脚 上的上升沿或 RTC 闹钟事件。
12、STM32F103 微控制器有哪些安全特性?
答:
看门狗、电源检测、时钟安全系统
13、什么是看门狗?STM32F103 微控制器的看门狗有何特性?
答:
(1)看门狗是嵌入式系统中常用的安全保障行机制。
(2)它可以实时监测程序的运行状态,即使由于某种原因微控制器进入一个错误状态,程序 跑飞进入死循环,系统也可以自动恢复。
14、什么是启动代码?它主要执行哪些工作?
答:
(1)启动代码用来初始化系统以及为嵌入式操作系统或者使用高级语言编写的嵌入式应用软 件做好运行前准备的一段汇编语言程序。
(2)初始化异常向量表、初始化时钟系统、初始化存储器系统、初始化堆栈和跳转到 main 函数等。
15、简述 STM32F103 微控制器的启动过程。
答:
(1)根据 BOOT0 和 BOOT1 引脚选择启动存储器映射。
(2)从地址 0x00000000 处取出栈顶指针值放入 MSP。
(3)从地址 0x00000004 处取出复位异常服务程序的入口地址放入 PC。
(4)执行复位异常服务程序。
16、使用嵌入式软件开发工具(如 KELL MDK 等)构建基于 STM32F103 微控制器应用的开发 过程,具体可以分为那几步?
答:
一般可分为 7 步:
(1) 从 ST 官网下载 STM32F10x 标准外设库。
(2) 下载安装嵌入式开发工具。
(3) 通过官方控制模板和硬件型号更改相关配置选项。
(4)编写程序代码。
(5)编译链接工程。
(6)使用软件模拟仿真或下载硬件运行等方式调试程序。
(7)下载到微控制器,复位从新运行。
1、 什么是 GPIO?
答:
微控制器数字输出输出的基本模块
2、 列举 STM32F103 微控制器 GPIO 的 8 种工作模式及使用场合。
答:P224
(1)上拉输入
(2)下拉输入
(3)浮空输入
(4)模拟输入
(5)普通推挽输出
(6)普通开漏输出
(7)复用推挽输出
(8)复用开漏输出
3、 对于 STM32F103 微控制器 GPIO 来说,什么是复用功能重映射?要实现 STM32F103 微控制器某个引脚的复用功能重映射,具体分哪几步操作?
答:
P225
(1) 用户根据实际需要可以把某些外设的复用功能从默认引脚转移到备用引脚上,这就是外设复用功能的 I/O 引脚重映射。
P226
(2)
①使能被重新映射到的 I/O 引脚的时钟
②使能 APB2 总线上的 AFIO 时钟
③按复用功能的方式配置 I/O 引脚
④使能被重新映射的外设时钟
⑤对外设进行 I/O 引脚重映射
4、 哪些情况下需要使能 STM32F103 微控制器 APB2 总线上的 AFIO 时钟? 答:
(1)外设复用功能重映射
(2)外部中断映射
(3)事件输出
5、 概述 STM32F103 微控制器 GPIO 的主要特性。
答:
P228
6、 简述使用库函数开发 STM32 微控制器应用的一般步骤。
答:
P241
7、 简述使用库函数操作 STM32F103 微控制器 GPIO 的具体过程。
答:
(1)使能该引脚所属 GPIO 端口(如 GPIOA、GPIOB 等)的时钟
(2)通过 GPIO_InitTypeDef 结构体变量配置 GPIO 引脚
(3)操作该引脚
1、 嵌入式系统中,定时器的主要功能有哪些?
答:延时、定时、计数、输入捕获、输出比较、PWM 输出等高级功能。
2、 STM32F103 微控制器定时器的类型有哪几种?STM32F103 微控制器不同类型的定时器有什么区别?
答:(P254、P263、P266,三个定时器的主要特性的区别)
(1)
①基本定时器 TIM6 和 TIM7、
②通用定时器 TIM2—TIM5、
③高级定时器 TIM1 和 TIM8
(2) 基本定时器只具备基本的定时功能,通用定时器除了基本的定时功能外它主要用于 测量输入脉冲的频率和脉冲宽度以及输出 PWM 脉冲等场合,还具有编码器接口。 高级定时器除了具有通用定时器的所有功能外,还可以被看成是一个分配到 6 个通 道的三相 PWM 发生器,具有带死区插入的互补 PWM 输出。
3、 STM32F103 微控制器通用定时器的常用工作模式有哪些?
答:
(1)计数模式(向上、向下、双向计数)、
(2)输出比较模式、
(3)PWM 输出模式、
(4)输入捕获模式、
(5)PWM 输入模式、
(6)单脉冲模式。
4、 什么是 PWM?PWM 的实现方式有哪几种?
答:
(1) 脉冲宽度调制,指对脉冲宽度的控制。
(2)
①传统的数字电路方式
②微控制器普通 I/O 模拟方式
③微控制器的 PWM 直接输出方式。
5、 简述无操作系统下基于无限循环的嵌入式软件架构的组成及应用场合。
答:
while(1){}用于延时。
6、 使用 C 语言开发基于 STM32F103 微控制器的应用程序时,是否可以像在 PC 上一样调用printf 函数输出信息?如果可以?应该预先做哪些配置?
答:
(1) printf 函数可以输出信息,但是需要输出重定向到其他设备(默认是设备显示器)
(2)
①重现实现 fputc 函数
②包含头文件 stdio.h
③勾选 USE MicroLIB 项
1、 中断服务函数与普通的函数相比有何异同?
答:
(1)相同点:结构上两者非常相似
(2)不同点:函数一般有参数和返回值,并在应用程序中被认为显示的调用执行,而中断服 务程序没有参数和返回值,并只有中断发生时才会被自动隐式地调用执行。
2、 什么是中断向量表?它通常存放在存储器的哪个位置?
答:
(1)中断向量表是一块存储区域,中断对应的中断服务程序的入口地址统一存放在中断向量 表中。
(2)中断向量表一般位于存储器的零地址位置。
3、 概述中断处理过程。
答:
(1)中断响应(保护现场、中断向量表中找到该中断对应的中断服务程序的地址)
(2)执行中断服务程序
(3)中断返回
4、 简述使用中断的优缺点。
答:
(1)优点:协调系统对各种外部事件的响应和处理,使系统能够快速响应紧急事件或优先处 理重要人物,减少 CPU 负荷,加快对事件的响应速度,显著地提高系统效率。
(2)缺点:
1、中断会增加程序执行的不确定性和时间长度。
2、中断会抢占正在使用的资源。
3、中断嵌套会增加栈空间。
5、 STM32F103 微控制器的中断系统共支持 84
个异常。其中包括 16
个内部异常和 68
个可 屏蔽的非内核异常中断。
6、 STM32F103 微控制器的中断系统,使用 4
位优先级设置,一共支持 16
级可编程异常优先级。
7、 对于不同的中断源,STM32F103 微控制器的响应顺序遵循什么规则?
答:
(1)先比较抢占优先级,抢占优先级高的中断优先响应。
(2)当抢占优先级相同时,比较子优先级,子优先级高的中断优先响应。
(3)当上述两者都相同时,比较它们在中断向量表中的位置,位置低的中断优先响应。
8、 STM32F103 微控制器复位中断服务程序的地址存放在中断向量表中的哪个位置?
答:0000_0004h
9、 STM32F103 微控制器的中断设置过程可以分为哪几步?
答:
(1)建立中断向量表(选择 Flash 或 RAM 中建立中断向量表,默认是 Flash)
(2)分配栈空间并初始化(分配栈空间、初始化栈)
(3)建立中断优先级(设置中断优先级分组的位数、设置中断的抢占优先级和子优先级)
(4)使能中断
(5)编写对应的中断服务程序
10、STM32F103 微控制器事件和中断有什么区别和联系?
答:
从外部激励信号看中断和事件的请求信号没有区别,只是在 STM32F103 微控制器的内部将 他们分开。中断信号会被送至 NVIC 向 CPU 产生中断请求,至于 CPU 如何响应,有用户编写 或系统默认的对应中断服务程序决定。事件信号会向其他功能模块(如定时器、USART、DMA 等)发送脉冲触发信号,至于其功能模块会如何响应这个脉冲触发信号,则由对应的模块自己决定。
11、STM32F103 微控制器 EXTI 信号线一共有多少根?它们分别对应哪些输入? 答:
(1)19 根
(2)除了 EXTI16(PVD 输出)、EXTI17(RTC 闹钟)和 EXTI18(USB 唤醒)外,其他 16 根外部 信号输入线分别对应微控制器的 16 个引脚。
12、若要使用 STM32F103 微控制器的 EXTI 中断,必先使哪个时钟?
答:
APB2 总线上该引脚对应端口时钟以及 AFIO 功能时钟。
13、C 语言的关键字 volatile 有什么作用?主要用于哪些场合?
答:
(1) volatile 意为易变的、不稳定的。不让编译器进行优化,即每次读取或修改 volatile 的值 时,都必须重新从内存或寄存器中读取或修改。
(2)
- 中断服务程序中修改的供其他程序检测的变量。
- 多任务环境下各任务间共享的标志。
- 存储器映射的硬件寄存器。
1、 什么是 DMA?DMA 有哪些传输要素?DMA 的整个传输过程分为哪几个步骤?
答:
(1)DMA(Direct Memory Access,直接存储器存取),是一种完全由硬件执行数据交换的工 作方式。它由 DMA 控制器而不是 CPU 来控制在存储器和存储器、存储器和外设之间的批量数据传输。
(2)传输要素:传输源、传输目标、传输单位数量、触发信号
(3)传输过程:DMA 请求、DMA 响应、DMA 传输、DMA 结束
2、 STM32F103 微控制器 DMA 一共有多少个通道?如何响应在不同通道上同时产生的 DMA请求?
答:
(1)一共具有 12 个独立的可配置的通道,其中 DMA1 有 7 个通道,DMA2 有 5 个通道。
(2)同一时刻,一个 DMA 只能有一个请求有效,通过先判断软件优先级,再判断硬件优先 级的顺序响应 DMA 请求。
3、 STM32F103 微控制器 DMA 通道的软件和硬件触发方式分别用于哪种场合?两者对于通 道的选择是否有所限定?
答:
(1) 硬件通道触发:适用于涉及片上外设的数据传输。当 DMA 传输涉及片上外设时应根据DMA1 和 DMA2 通道映射表的分配情况,选择指定的 DMA 及其通道。
(2) 软件触发:适用于仅涉及存储器之间的数据传输。当 DMA 传输仅涉及存储器时,可任 意选择未被外设占用的 DMA 通道。
4、 STM32F103 微控制器的 DMA 传输模式有哪几种?
答:
普通模式、循环模式
5、 STM32F103 微控制器 DMA 传输允许的最大数据量是多少?
答:
DMA 数据传输量(最大为 65535)可编程。
6、 C 语言的关键字 volatile 有什么作用?主要用于哪些场合?
答:
(1)volatile 意为易变的、不稳定的。不让编译器进行优化,即每次读取或修改 volatile 的值时,都必须重新从内存或寄存器中读取或修改。
(2)
1、中断服务程序中修改的供其他程序检测的变量。
2、多任务环境下各任务间共享的标志。
3、存储器映射的硬件寄存器。
1、 什么是 ADC?
答:
ADC 模拟数字转换器,是一种将连续变化的模拟信号转换为离散的数字信号的电子器件。
2、 ADC 进行模数转换分为哪三步?
答:
采样、量化、编码
3、 ADC 的性能参数有哪些?分别代表什么意义?
答:
(1)量程:指 ADC 所能转换的模拟输入电压的范围。
(2)分辨率:反映 ADC 对输入信号微小变化的响应能力,描述刻度大小。
(3)精度:指对于 ADC 的数字输出(二进制代码),其实际需要的模拟输入值与理论上要求 的模拟输入值之差,描述物理量的准确程度。
(4)转换时间:ADC 完成一次 A/D 转换所需要的时间,是指从启动 ADC 开始到获得相应数据 所需要的总时间。
4、 ADC 的主要类型有哪些?他们各自有什么特点?
答:
(1)逐次逼近型:规模中等、转换速度较快、转换精度较高、功耗低。
(2)电压时间转换型:工作性能比较稳定且抗干扰能力强,转换速度慢。
(3)电压频率转换型:抗干扰能力强,转换速度慢。
5、 要使 STM32F103 的 ADC 能正常工作,对供电电源有何要求?
答:
ADC 的供电要求 2.4~3.6V
6、 STM32F103 的 ADC 可测模拟输入信号 VIN 的范围是多少?
答:
(负极参考电压)VREF- <= VIN <= VREF+(正极参考电压)
7、 STM32F103 的 ADC 共有几路通道?可分为几组?每组最多可容纳多少路通道?
答:
ADC 最多有 18 路模拟输入通道,除了 ADC1_IN16 与内部温度传感器相连,ADC1_IN17 与内 部参照电压相连,其他的 16 路通道都可用作模拟输入的引脚。可分为规则通道组和注入通
道组 ,其中规则通道组最多包含 16 路请求,注入通道最多包含 4 路通道。注入通道组转换 的启动有两种方式:触发注入和自动注入。
8、 假设 STM32F103 的 APB2 总线频率为 72MHz,ADC 预分频系数设置为 8,采样时间选取 41.5
个 ADC 时钟周期,那么此时 ADC 转换时间是多少?
答:
ADC 的转换时间 TCONV=采样时间+量化编码时间(固定为 12.5 个 ADC 时钟周期)
ADC 的转换时间=41.5+12.5=54 个 ADC 时钟周期
APB2 总线频率为 72MHz 经 ADC 预分频系数 8 预分频后得 72/8=9MHz
所以,54x(1/(9x1000000))= 6 微秒
9、 STM32F103 的 ADC 的模数转换模式有哪几种?
答:
单次转换模式、连续转换模式、扫描模式(规则和注入)、间断模式(规则和注入)
10、STM32F103 的 ADC 的触发转换方式有哪些?
答:
规则通道外部触发事件:TIM1_CC1 等等。 注入通道外部触发事件:TIM1_CC4 等等。
11、STM32F103 的每个 ADC 是否都能产生 DMA 请求?ADC 的每路通道是否都能产生 DMA
请求?
答:
(1)否
(2)否
仅有规则通道组可以产生 DMA 请求。
12、常用的软件滤波算法有哪些?
答:
中位值平均滤波算法
13、外围 I/O 设备与 CPU 交换数据的方式有哪几种?试说明它们各自的特点。
答:
(1)程序直接控制方式:就是由用户进程直接控制内存或 CPU 和外围设备之间的信息传送。 这种方式控制者都是用户进程。
(2)中断控制方式:被用来控制外围设备和内存与 CPU 之间的数据传送。这种方式要求 CPU 与设备(或控制器)之间有相应的中断请求线,而且在设备控制器的控制状态寄存器的相应 的中断允许位。
(3)DMA 方式:又称直接存取方式。其基本思想是在外围设备和内存之间开辟直接的数据 交换通道。
(4)通道方式:与 DMA 方式相类似,也是一种以内存为中心,实现设备和内存直接交换 数据控制方式。
1、 解释以下数据通信相关的基本概念:串行通信、并行通信、单工通信、半双工通信、全 双工通信、同步通信、异步通信。
答:
(1)串行通信:使用一条数据线将数据一位一位的依次传输。
(2)并行通信:使用多条数据线传输数据。
(3)单工通信:在同一通路上,只单向传输。
(4)半双工通信:在同一通路上,双向传输。
(5)全双工通信:在不同通路上,双向传输。
(6)同步通信:发送端与接收端之间使用共同的时钟。
(7)异步通信:发送端与接收端之间不存在共同的时钟。
2、 在数据通信中,波特率和比特率有什么区别和联系?
答:
(1)比特率:
比特率是指每秒传送的比特(bit)数。单位为 bps(Bit Per Second),比特率越高,传送数 据速度越快。每秒钟通过信道传输的信息量称为位传输速率,也就是每秒钟传送的二进制位 数,简称比特率。比特率表示有效数据的传输速率,用 b/s 、bit/s、比特/秒,读作:比特每 秒。
(2)波特率:
在信息传输通道中,携带数据信息的信号单元叫码元,每秒钟通过信道传输的码元数称 为码元传输速率,简称波特率。波特率是指数据信号对载波的调制速率,它用单位时间内载 波调制状态改变的次数来表示(也就是每秒调制的符号数),其单位是波特(Baud,symbol/s)。 波特率是传输通道频宽的指标。
(3)波特率与比特率的关系:
比特率=波特率 x 单个调制状态对应的二进制位数。
例如:假设数据传送速率为 120 符号/秒(symbol/s)(也就是波特率为 120Baud),又假设每一 个符号为 8 位(bit)即八相调制(单个调制状态对应 3 个二进制位),则其传送的比特率为 (120symbol/s) x (3bit/symbol)=360bps.
(4)由于 URAT 使用 NRZ 编码,因此 URAT 的波特率和比特率是相同的。
3、 简述 UART 的接口组成及其电平标准。
答:
(1)接口组成:
TXD 用于发送数据
RXD 用于接收数据
GND 是地线
(2)电平标准:
UART 采用 TTL/CMOS 的逻辑电平标准(0~5V、0~3.3v、0~2.5v 或0~1.8v)表示数据,用高电平表示逻辑1,用低电平表示逻辑0。
在 TTL 电平标准中:逻辑1通常用+5V 表示,逻辑0通常用0V表示。
在 CMOS 电平标准中:逻辑1的电平一般接近于电源电压,逻辑0的电平一般接近于0V。
4、 简述 RS232 的接口组成及其电平标准。
答:
(1)接口组成:
通常采用 DB-9 的形式
TXD 用于发送数据
RXD 用于接收数据
SG 是地线等等
(2)电平标准:
RS232 采用负逻辑:用-3~-15V(通常为-12V)来表示逻辑 1,用+3∽+15V(通常为+12V) 来表示逻辑 0。
5、 画出带 UART 接口的微控制器与带 RS232 接口的 PC 物理连接图。 答:P430(太懒啦)
6、 画出带 UART 接口的微控制器与带 USB 接口的 PC 物理连接图。 答:?(太懒啦)
7、 UART 数据帧由哪些部分组成?
答:
UART 数据是按照一定格式打包成帧,以帧为单位在物理链路上进行传输的。
UART 的数据格式由起始位、数据位、校验位、停止位和空闲位等构成。其中,起始位、数据位、校验位和停止位,构成了一个数据帧
8、 简述 STM32F103 微控制器的 USART 的主要特点。 答:P432(太懒啦)
9、 概述 STM32F103 微控制器的 USART 的内部结构。
答:
USART 结构自上而下可分为波特率控制、收发控制和数据存储转移三大部分。
10、SM32F103 微控制器的 USART 有那些中断事件?可以产生哪些 DMA 请求?
答:
发送期间:发送完成(TC)、清除发送(CTS)、发送数据寄存器空(TXE)
接收期间:空闲总线检测(IDLE)、溢出错误(ORE)、接收数据寄存器非空(RXNE)、校验错误(PE)、LIN 断开检测(LBD)、噪声错误(NE,仅在多缓冲器通信)和帧错误(FE,仅在多缓冲器通信)。
11、假设 STM32F103 微控制器的 USART1 设置为 38.4kbps,7 位数据位,一位偶校验位,2 位停止位,发送一个大小 1KB 的文件,需要多少时间?
答:
1KB = 1024B = 8x1024bit,大小 1KB 的文件等于 1024 个字,等于 8x1024 个字节。 因为数据帧中的数据位是 7 位,所以 1024B x(7+(1)=1024x7+1024(bit) 然后,
算法一:{【1024 x(7+1+2+(1)】 + 【1024 / 7 x(7+1+2+(1)】} /38400=335.2 毫秒
算法二:【1024 x 8 / 7 x(7+1+2+(1)】/38400=335.2 毫秒
12、假设 STM32F103 微控制器的 USART1 设定以下数据格式:8 个数据位(低位在前高位在 后),奇校验位,1 个停止位,画出发送字母‘E’时 USART1 发送引脚 TXD 的波形图。
答:P431(太懒啦)
1、 通常,SPI 接口由哪几根线组成?它们分别有什么作用?
答:
(1)SCK,即时钟线,由主设备产生。不同的设备支持的时钟频率不同。但每个时钟周期可 以传输一位数据,经过 8 个时钟周期一个完整的字节数据就传输完成了。
(2)MOSI,即主设备数据输出∕从设备数据输入线。这条信号线上的方向是从主设备到从设 备,即主设备从这条信号线发送数据,从设备从这条信号线上接收数据。 (3)MISO,即主设备数据输入∕从设备数据输出线。这条信号线上的方向是由从设备到主设 备,即从设备从这条信号线发送数据。
(4)SS,SPI 从设备选择信号线。当有多个 SPI 从设备与 SPI 主设备相连(即“一主多从”)时, SS 用来选择激活指定的从设备,由 SPI 主设备(通常是微控制器)驱动,低电平有效。当只 有一个 SPII 从设备与 SPI 主设备相连(即“一主一从”)时,SS 并不是必需的。
2、 SPI 的传输时序有哪几种?最大传输速率可达多少?
答:
(1)SPI 时序与其时钟极性和时钟相位相关。CPOL=0,CPHA=0; CPOL=0,CPHA=1; CPOL=1,CPHA=0; CPOL=1,CPHA=1
(2)最大传输速率可达几十兆赫。
3、 SPI 的数据格式有哪几种?传输顺序可分为哪几种?
答:
(1)与 UART 相似,SPI 数据传输也是以帧为单位,通常可以选择 8 位或 16 位数据帧格式。
(2)数据的传输顺序可进行编程选择,MSB 在前或 LSB 在前两种。
4、 假设 SPI 编程设定以下时序(CPOL=0,CPHA=0)和数据帧格式(8 个数据位,高位在前低 位在后),画出 SPI 主设备发送字节数据 ox98(十六进制数)时其引脚 MOSI、SCK 和 CS 的波形图。
答:P476(太懒啦)
5、 假设 SPI 编程设定以下时序(CPOL=0,CPHA=(1)和数据帧格式(8 个数据位,底位在前高 位在后),画出 SPI 主设备发送数字’6’时其引脚 MOSI、SCK 和 CS 的波形图。
答:P476(太懒啦)
6、 假设 SPI 编程设定以下时序(CPOL=1,CPHA=0)和数据帧格式(8 个数据位,高位在前低 位在后),画出 SPI 主设备发送字母’r’(十六进制数)时其引脚 MOSI、SCK 和 CS 的波形 图。
答:P476(太懒啦)
7、 假设 SPI 编程设定以下时序(CPOL=1,CPHA=(1)和数据帧格式(8 个数据位,高位在前低 位在后),画出 SPI 主设备发送字节数据 ox54(十六进制数)时其引脚 MOSI、SCK 和 CS 的波形图。
答:P476(太懒啦)
8、 简述 STM32F103 微控制器的 SPI 的主要特点。
答:
(1)SPI1 位于高速 APB2 总线上,其他的 SPI(如 SPI2、SPI3 等)位于 APB1 总线上; 既可以作为主设备,也可以作为 SPI 从设备;
(2)主模式和从模式下均可由软件或硬件进行 NSS 管理,动态改变主∕从操作模式;
(3)可编程的 SPI 时序:由时钟极性和时钟相位决定;
(4)可编程的 SPI 数据格式:8 位或 16 位数据帧;LSB 在前或 MSB 在前的数据顺序;
(5)可编程的 SPI 传输速率:最高 SPI 速率可达 18MHz;
(6)可触发中断的两个标志位:发送标志位 TXE(发送缓冲区空)和接收标志位 RXNE(接收 缓冲区非空);
(7)支持 DMA 功能的 1 字节发送和接收缓冲区:分别产生发送和接受请求;
(8)带或不带第三根双向数据线的双线单工同步传输;
(9)支持以多主配置方式工作;
9、 概述 STM32F103 微控制器的 SPI 的内部结构。(太懒啦)
答:P470(图 11-10)
SPI 主要由波特率控制、收发控制和数据存储转移 3 部分构成。
10、分别概述 STM32F103 微控制器 SPI 主模式的配置,以及在主模式下发送一个字节数据和接受一个字节数据的流程(自行概述吧)
答:P471
1.配置SPI为主模式
在主配置时,在SCK脚产生串行时钟。
配置步骤
(1)通过SPI_CR1寄存器的BR[2:0]位定义串行时钟波特率。
(2)选择CPOL和CPHA位,定义数据传输和串行时钟间的相位关系。
(3)设置DFF位来定义8位或16位数据帧格式。
(4)配置SPI_CR1寄存器的LSBFIRST位定义帧格式。
(5)如果需要NSS引脚工作在输入模式,硬件模式下,在整个数据帧传输期间应把NSS脚连接到高电平;在软件模式下,需设置SPI_CR1寄存器的SSM位和SSI位。如果NSS引脚工作在输出模式,则只需设置SSOE位。
2.数据发送过程当数据被程序写入至发送缓冲区时,发送过程开始。在发送第一个数据位时,数据通过内部总线被并行地传人移位寄存器。然后,根据指定顺序(MSB在先还是 LSB 在先)串行地移出到 MOSI脚上。当数据完成从发送缓冲区到移位寄存器的传输时,TXE标志被置位。此时,如果设置了SPL_CR1 寄存器中的 TXEIE 位,将产生中断。
一旦传输开始,如果下一个将发送的数据被放进了发送缓冲器,就可以维持一个连续的传输流。3.数据接收过程
MISO 引脚上的数据位随着时钟信号 SCK 被一位一位依次传人移位寄存器。在SCK 最后一个采样时钟边沿后,SPI_SR 寄存器中的RXNE 标志被置位,移位寄存器中接收到的数据被全部传送到接收缓冲区。此时,如果 SPI_CR2 寄存器中的 RXNEIE 位被置 1,则会产生中断。当读取 SPI 数据寄存器 SPI_DR 时,会返回这个接收缓冲区的数值,并且清除 SPI_SR 寄存器中的 RXNE位。
11、分别概述 STM32F103 微控制器 SPI 从模式的配置,以及在从模式下发送一个字节数据和接受一个字节数据的流程(自行概述吧)
答:P472
1.配置SPI为从模式
配置步骤
(1)设置DFF位以定义数据帧格式为8位或16位。
(2) 选择CPOL和CPHA位来定义数据传输和串行时钟之间的相位关系。为保证正确的数据传输,从设备和主设备的CPOL和CPHA位必须配置成相同的方式。
(3)帧格式(SPI_CR1寄存器中的LSBFIRST位定义的”MSB在前”还是”LSB在前”)必须与主设备相同。
(4)硬件模式下(参考从选择(NSS)脚管理部分),在完整的数据帧(8位或16位)传输过程中,NSS引脚必须为低电平。在NSS软件模式下,设置SPI_CR1寄存器中的SSM位并清除SSI位。
(5)清除MSTR位、设置SPE位(SPI_CR1寄存器),使相应引脚工作于SPI模式下。
在这个配置中, MOSI引脚是数据输入, MISO引脚是数据输出。
2.数据发送过程当工作在 SPI 从模式下的 STM32F103 微控制器发送数据时,数据先被并行地写人发送缓冲区。当收到时钟信号 SCK 并在 MOSI引脚上出现第一个数据位时,数据发送过程开始(此时第一个位被发送出去)。余下的位(对于 8 位数据帧格式,还有 7 位;对于16位数据帧格式,还有 15 位)被装进移位寄存器。当发送缓冲区中的数据完成向移位寄存器的传输时,SPIL_SR 寄存器的 TXE标志被置位,此时如果 SPL_CR2 寄存器的 TXETE位也被设置,将会产生中断。
3.数据接收过程
工作在 SPI 从模式下的 STM32F103 微控制器接收数据时,MISO 引脚上的数据位随着时钟信号 SCK 被一位一位依次传入移位寄存器,并转人接收缓冲区。在 SCK 最后一个采样时钟边沿后,SPL_SR 寄存器中的 RXNE标志被置位,移位寄存器中接收到的数据字节被全部传送到接收缓冲区。此时,如果 SPI_CR2 寄存器中的 RXNEIE位被置1,则会产生中断。当读取 SPI 数据寄存器 SPL_DR 时,返回这个接收缓冲区的数值,并且清除 SPL_SR 寄存器中的 RXNE位。
12、画出 STM32F103 微控制器 SPI 发送数据的程序流程图。 答:P475 (太懒啦)
13、画出 STM32F103 微控制器 SPI 接收数据的程序流程图。 答:P475(太懒啦)
14、STM32F103 微控制器的 SPI 有哪些状态标记位?可以产生哪些中断请求?
答:
(1)状态标记位:
TXE(发送缓冲区空闲标志)
RXNE(接收缓冲区非空标志)
BSY(Busy,忙标志)(2)
中断请求 TXE(发送缓冲区空闲中断请求)
RXNE(接收缓冲区非空中断请求)
15、如何使用 STM32F103 微控制器的 DMA 进行 SPI 通信? 答:P475
在SPI通信中,可以同时开启发送和接收DMA请求,自动数据的发送和接收,完成数据的交换 基本步骤是:
- 配置好SPI相应引脚功能
- 配置和初始化SPI
- 初始化DMA
- 片选信号选择要通信的设备
- 打开DMA 对应DMA通道:SPI1_RX—DMA1_Channel2;SPI1_TX—DMA1_Channel3
详情参考STM32的使用之SPI通信DMA模式
或者看书上的
STM32F103 系列微控制器每个 SPI 的 DMA 接收请求、DMA 发送请求和 DMA 及其通道间的具体映射关系参见表 8-1 和表8-2。例如,SPI1 的 DMA 接收请求 SPI1_Rx被映射到 DMA1 的通道 2,SPI1 的 DMA 发送请求SPI1_Tx被映射到 DMA1 的通道 3;而 SPI2 的 DMA 接收请求 SPI2_Rx 被映射到 DMA1 的通道 4,SP12的 DMA 发送请求SPI2_Tx 被映射到 DMA1 的通道 5。
1.使用 DMA 的 SPI数据发送
当 SPL_CR2 寄存器上的 TXDMAEN 位被设置时,STM32F103 微控制器的 SPI模块可以发出 DMA 发送传输请求。
当每次 TXE 标志被置 1 时,发出 DMA 请求。DMA 控制器将 SRAM 指定地址上的数据写至 SPI_DR寄存器。写入完成后,TXE 标志被清除。
在发送模式下,当 DMA 传输所有要发送的数据(DMA_ISR 寄存器的 TCIF 标志变为1)完毕后,可以通过监视 BSY 标志以确认 SPI通信结束。这样,可以避免在关闭SPI或进入停止模式时破坏最后一个数据的传输。因此,软件编程时需要先等待 TXE=1,然后等待 BSY=0.2.使用 DMA 的 SPI 数据接收
当 SPI_CR2 寄存器上的 RXDMAEN 位被设置时,STM32F103 微控制器的 SPI 模块可以发出 DMA 接收传输请求。 当每次 RXNE 标志被设置为 1 时,发出 DMA 请求。DMA 控制器从 SPI_DR寄存器读出数据送到 SRAM 的指定地址。读取完成后,RXNE 标志被清除。
1、 解释 I2C 通信中的以下常用术语:主机、从机、接受器、发送器。
答:
(1)主机:初始化发送、产生时钟和终止发送的器件,通常是微控制器;
(2)从机:被主机寻址的器件;
(3)发送器:本次传输中发送数据到 I2C 总线的器件,既可以是主机也可是从机,由通信过 程具体确定;
(4)接收器:本次传输中从 I2C 总线上接收数据的器件,既可以是主机也可以从机,由通信 过程具体确定。
2、 I2C 接口由哪几根线组成?它们分别有什么作用?
答:
(1)SCL(Serial Clock,串行时钟线):I2C 通信中用于传输时钟的信号线,通常由主机发出。 SCL 采用集电极开路或漏极开路的输出方式。这样,I2C 器件只能使 SCL 下拉到逻辑 0,而不能强制 SCL 上拉到逻辑 1。
(2)SDA(Serial Data,串行数据线):I2C 通信中用于传输数据的信号线。与 SCL 类似,SDA 也采用集电极开路或漏极开路的输出方式。这样,I2C 器件同样也只能使 SDA 下拉到逻辑 0, 而不能强制 SDA 上拉到逻辑 1。
3、 与 SPI 互连相比,I2C 互联有什么特点?
答:
(1)必须在 I2C 总线上外接上拉电阻。
(2)通过地址区分挂载在 I2C 总线上不同的器件。
(3)支持多主机互连。
4、 I2C 的时序由哪些信号组成?
答:
I2C 的位时序,包括起始条件、数据有效性、停止条件等。
5、 试比较嵌入式系统中常用 3 种通信接口:USRT、SPI 和 I2C。
答:重点 从物理层、协议层、连接方式、主要特性、内部结构等方面讨论。
6、 假设 I2C 从机采用 7 位硬件地址结构(0b0100100),画出 I2C 主机向 I2C 从机读取 2B 数 据(0x2F 和 0x2F)时 I2C 引脚 SCL 和 SDA 的波形图。
答:P532(太懒啦)
7、 假设 I2C 从机采用 7 位硬件地址结构(0b0100000),画出 I2C 主机向 I2C 从机写入 2B 数 据(0x28 和 0x2(8)时 I2C 引脚 SCL 和 SDA 的波形图。
答:P533(太懒啦)
8、 简述 STM32F103 微控制器的 I2C 的主要特点。
答:
(1)所有的 I2C 都位于 APB1 总线;
(2)支持标准(100Kbps)和快速(400Kbps)传输速率;
(3)所有的 I2C 可工作于主模式或从模式,可以作为主发送器、主接收器、从发送器或者从 接收器;
(4)支持 7 位或 10 位寻址和广播呼叫;
(5)具有 3 个状态标志:发送器/接收器模式标志、字节发送结束标志、总线忙标志;
(6)具有 2 个中断向量:1 个中断用于地址∕数据通讯成功,1 个中断用于错误;
(7)具有单字节缓冲器的 DMA
9、 概述 STM32F103 微控制器的 I2C 的内部结构。
答:
由 SDA 线和 SCL 线展开,主要分为时钟控制、数据控制、控制逻辑等部分?负责实现 I2C 的 时钟产生、数据收发、总线仲裁和中断、DMA 等功能。
10、分别画出 STM32F103 微控制器的 I2C 作为主发送器和从接收器的数据包(含事件)传输序列图。
答:P536(太懒啦)
11、分别画出 STM32F103 微控制器的 I2C 作为主接收器和从发送器的数据包(含事件)传输序列图。
答:P537(太懒啦)
12、STM32F103 微控制器的 I2C 有哪些状态标志位?可以产生哪些中断请求?
答:P540(表 11-(2))
13、如何使用 STM32F103 微控制器的 DMA 进行 I2C 通信?
答:P540
与USART 和SPI 相同,STM32F103 系列微控制器的I2C也可以利用 DMA 进行连续通信。同样,每个I2C有一个 DMA的发送请求和一个 DMA 的接收请求,分别被映射到不同的 DMA 通道上。这样,在同一时刻可以使用 DMA 对 STM32F103系列微控制器所有的 I2C 进行数据传输。
STM32F103 系列微控制器每个 I2C 的 DMA 接收请求、DMA 发送请求和DMA及其通道间的具体映射关系,参见表 8-1 和表 8-2。
例如,12Cl 的 DMA 接收请求 I2C1_Rx被映射到 DMA1 的通道 7,I2C1 的 DMA 发送请求 I2C1_Tx被映射到 DMAL的通道 6;而 12C2 的 DMA 接收请求 I2C1_Rx被映射到 DMA1 的通道 5,I2CI 的 DMA 发送请求I2C1_Tx 被映射到 DMA1 的通道 4。I2C 发送时数据寄存器变空或接收时数据寄存器变满,都会产生 DMA 请求。而且,DMA 请求必须在当前字节传输结束之前被响应。当为相应 DMA 通道设置的数据传输量已经完成时,DMA 控制器发送传输结束信号 ETO 到 I2C 接口,并且在中断使能时产生一个传输完成中断。
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章