嵌入式系统复习重点

嵌入式系统简介

嵌入式系统的概念,定义

胰液纸

嵌入式系统是设计完成复杂功能的硬件和软件集合体,并使其紧密耦合在一起的计算机系统(PPT)

定义:以应用为中心、以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。(PPT)

嵌入式系统的特点

特点名称 说明与举例
专用性强 仅为某种设备或功能定制设计。如微波炉的嵌入式控制系统不能用于洗衣机。
可裁剪性 硬件和软件可根据需求进行裁剪。例如:STM32F1 系列主频72MHz,最小系统OS占用仅8KB。
实时性好 系统需在严格时间限制内作出响应。例如ATM机插卡时需立刻读取卡信息。
可靠性高 长期、连续、稳定运行,适应恶劣环境,并具备机制如看门狗、内存保护、重启机制等。
生命周期长 生命周期与产品一致,通常经历:导入期 → 成长期 → 成熟期 → 衰退期。
不易被垄断 相较通用计算机市场(被Intel/Microsoft主导),嵌入式领域厂商多样、竞争激烈,技术生态丰富。

嵌入式系统和通用的计算机系统的区别;

对比维度 嵌入式系统 通用计算机系统
目标用途 面向特定功能 面向多用途、通用应用
资源配置 有限,按需裁剪 资源丰富(CPU、RAM等)
操作系统 RTOS或无OS 通用操作系统(Windows、Linux)
实时性 强实时性(硬实时) 通常不强调或软实时
用户交互 少或无用户交互 鼠标、键盘、图形界面丰富
软件升级 固定或通过设备升级 用户可自主频繁更换

嵌入式操作系统的结构,包括哪几层?

三层结构

图片

STM32芯片简介

STM32嵌入式系统的时钟主要包括哪4种?

  1. HSE(High-Speed External):外部高速晶振(常见8MHz石英晶体)。
  2. HSI(High-Speed Internal):内部高速RC振荡器(STM32F1中通常为8MHz)。
  3. LSE(Low-Speed External):外部低速晶振(32.768kHz,用于RTC)。
  4. LSI(Low-Speed Internal):内部低速RC振荡器(用于低功耗和RTC等)。 ## STM32的时钟树(APB1和APB2的最大频率、挂载的外设、串口)
  • AHB(Advanced High-performance Bus):主总线,连接CPU、DMA、SRAM等。
  • APB1(低速外设总线)
    • 最大频率:36 MHz(对于STM32F103系列)
    • 常见挂载外设:USART2/3、I2C1/2、SPI2、CAN等
  • APB2(高速外设总线)
    • 最大频率:72 MHz
    • 常见挂载外设:USART1、SPI1、ADC等 ## 什么是波特率,如何根据波特率计算分频系数
  • 波特率(Baud Rate):表示单位时间内传输的符号数,1 Baud = 1 bit/s(对于二进制信号)。
  • 计算公式(以USART为例)\(USARTDIV=\frac{f_{CK}}{16 \times \mbox{波特率}}\)
    • f_CK:USART模块输入的时钟频率(如APB1或APB2时钟)
    • 得出的 USART_DIV 由整数部分(用于设置分频器)和小数部分(设置采样精度)决定。

嵌入式系统正常工作的最小系统组成电路单元主要包括

  • 嵌入式芯片(如STM32)
  • 电源电路(为MCU提供稳定的电压,如3.3V)
  • 晶振电路(时钟源)
  • 复位电路(上电或异常复位)
  • 下载调试电路(如SWD或JTAG接口)
  • BOOT启动电路(通过BOOT0/BOOT1引脚选择启动模式:主Flash、系统Bootloader、SRAM等)

指令集、架构、处理器、内核,芯片之间的关系,cortex内核的3个架构版本(ARMv7-M,A,R),分别用于哪三个场景?

架构 内核示例 主要用于
ARMv7-A Cortex-A7/A8/A9 应用处理器,如手机、Linux系统等
ARMv7-R Cortex-R4/R5 实时处理系统,如汽车、工业控制
ARMv7-M Cortex-M0/M3hang/M4/M7 微控制器,低功耗嵌入式设备(如STM32)

哈佛结构 vs 冯诺依曼结构

特点 哈佛结构 冯诺依曼结构
程序/数据存储 分开存储 共用同一存储器
指令和数据总线 各自独立 共用总线
并行访问能力 支持指令和数据并行访问 访问瓶颈(冯诺依曼瓶颈)
典型应用 DSP、Cortex-M系列 传统PC、部分ARM A系列

HAL库

STM32提供了哪些库函数?

库类型 全称 说明
LL库 Low Layer 接近寄存器级,执行效率高,功能轻量,需开发者了解硬件底层。
HAL库 Hardware Abstraction Layer 抽象硬件细节,便于跨平台、模块化编程,推荐新手和中大型项目使用。
CMSIS库 Cortex Microcontroller Software Interface Standard ARM 官方定义的内核级支持库,提供中断向量表、Systick、NVIC等基础接口。

HAL库中各类.h以及.s文件的描述,作用?

文件名 文件类型 作用与说明
stm32f1xx.h 头文件 主芯片系列头文件,统一包含对应 STM32F1 系列(如F103)的定义。引入芯片型号对应的具体头文件如 stm32f103xe.h
startup_stm32f103xe.s 汇编启动文件 启动文件,完成以下任务:1. 设置中断向量表2. 初始化堆栈、堆区3. 跳转到 main()4. 异常/中断默认处理入口
system_stm32f1xx.c/h 源文件 / 头文件 系统时钟配置相关代码。提供 SystemInit()SystemCoreClockUpdate() 等函数,用于配置 HSE/PLL 等系统主频。
stm32f103xe.h 头文件 定义具体 STM32F103XE 芯片的所有寄存器地址、位域、结构体、时钟/外设映射。
stm32f1xx_hal_conf.h 头文件 HAL库配置文件,启用/禁用某些 HAL 模块(如 ADC、USART、TIM),控制编译裁剪。
等等
stm32f1xx_hal_xxx.c/h 源文件 / 头文件 HAL驱动模块,具体外设功能的库代码。例如:- stm32f1xx_hal_gpio.c/h 控制GPIO- stm32f1xx_hal_usart.c/h 控制串口- stm32f1xx_hal_adc.c/h 控制ADC
core_cm3.h 头文件 ARM Cortex-M3 内核寄存器定义,如 SCB、NVIC、SysTick 等,来自 CMSIS。
main.c 用户代码入口 用户主程序入口,常见结构:int main(void) {...}
stm32f1xx_it.c/h 中断处理 所有中断服务函数,如 SysTick_Handler()USARTx_IRQHandler() 等定义和实现。

GPIO

STM32包含哪几类引脚

引脚类型 常见引脚名称/编号 功能说明
电源引脚 VDDVSSVDDAVSSA 为芯片提供工作电压(一般为 3.3V)与模拟/数字地。VDDA/VSSA 用于 ADC、DAC 等模拟模块供电。
晶振引脚 HSE_INHSE_OUTLSE_INLSE_OUT 外部时钟输入输出引脚,HSE用于高速晶振(如8MHz),LSE用于低速晶振(如32.768kHz,用于RTC)。
复位引脚 NRST 外部复位引脚,低电平有效,复位芯片。
下载引脚 SWDIOSWCLK(或 JTAG接口:TMS, TCK, TDI, TDO, TRST 下载/调试接口引脚,使用 SWD/JTAG 连接调试器如 ST-Link。
BOOT引脚 BOOT0、(部分型号有 BOOT1 启动模式选择引脚。BOOT0=0:从主Flash启动BOOT0=1:从系统内存(ISP)或SRAM启动
GPIO引脚 PAx, PBx, PCx 通用输入输出引脚,可配置为输入、输出、外设复用(串口、PWM、I2C等)或模拟输入。

什么是GPIO?它的作用是什么?

GPIO(General-Purpose Input/Output) 指的是“通用输入输出引脚”。 作用:负责采集外部器件的信息或者控制外部器件工作,即输入输出

几种工作模式?复用的有哪几种?

GPIO八种模式 特点及应用
输入浮空 输入用,完全浮空,状态不定
输入上拉 输入用,用内部上拉,默认是高电平
输入下拉 输入用,用内部下拉,默认是低电平
模拟功能 ADC、DAC
开漏输出 软件IIC的SDA、SCL等
推挽输出 驱动能力强,25mA(max),通用输出
开漏式复用功能(复用) 片上外设功能(硬件IIC 的SDA、SCL引脚等)
推挽式复用功能(复用) 片上外设功能(SPI 的SCK、MISO、MOSI引脚等)

STM32嵌入式系统的GPIO电气特性,输出电流一般多大?输入电压(两种)

高电平范围: -0.3V ≤ \(V_{IL}\) ≤ 1.164V 低电平范围:1.833V ≤ \(V_{IH}\) ≤ 3.6V 输出电流:单个IO不大于25mA

编程题,通过GPIO输入控制LED亮灭,或者通过按键输入,再控制LED亮灭。搞清楚使用的GPIO模式,初始化代码的编写。

需要使用HAL_GPIO_ReadPin函数:使用例HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_9) 用例:HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_SET)

初始化代码例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
static void MX_GPIO_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};
  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOD_CLK_ENABLE();
  __HAL_RCC_GPIOA_CLK_ENABLE();
  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET);
  /*Configure GPIO pin : PA8 */
  GPIO_InitStruct.Pin = GPIO_PIN_8;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  /*Configure GPIO pin : PA9 */
  GPIO_InitStruct.Pin = GPIO_PIN_9;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_NOPULL;         // <----- This Option
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}

中断

STM32微控制器的中断优先级规则

(高响应优先级可以打断正在执行的低响应优先级中断;响应中断,抢占中断的关系) ## NVIC是什么,EXTI是什么? |缩写|全称|功能| |—|—|—| |NVIC|Nested Vectored Interrupt Controller|嵌套向量中断控制器,管理中断优先级和使能,支持中断嵌套。| |EXTI|External Interrupt/Event Controller|外部中断/事件控制器,将 GPIO 引脚事件映射为中断线,最多支持 20 条外部中断线。|

中断优先级包括哪三种?

  1. 抢占优先级(pre):高抢占优先级可以打断正在执行的低抢占优先级中断
  2. 响应优先级(sub):当抢占优先级相同时,响应优先级高的先执行,但是不能互相打断
  3. 抢占和响应都相同的情况下,自然优先级越高的,先执行
  4. 自然优先级:中断向量表的优先级
  5. 数值越小,表示优先级越高

串口

USART, UART , SPI, IIC 之间的共同点和区别,各自有哪些信号线?

SPI在物理层体现为4条信号线,分别是哪些?

信号线名称 全称 方向(主设备视角) 功能说明
SCLK Serial Clock 输出 主机产生的时钟信号,驱动数据传输。
MOSI Master Out Slave In 输出 主机发送数据到从机。
MISO Master In Slave Out 输入 从机发送数据到主机。
NSS/CS Chip Select (Slave Select) 输出 主机选择从机,低电平有效。多个从设备时,每个从机一般独立连接一条 CS 线。

IIC总线在传输数据的过程中一共有三种类型信号,分别为哪些?

起始信号,终止信号,应答信号(ACK)

IIC总线时钟线空闲为什么电平?数据线为什么电平?分别设置为哪种输出模式?

空闲时都为高电平,其涉及的GPIO SDA设置为复用开漏模式,SCK设置为复用推挽

什么是EEPROM 存储器?它的特点是什么?

EEPROM(Electrically Erasable Programmable read only memory)是一种掉电后数据不丢失的储存器,常用来存储一些配置信息,在系统重新上电时就可以加载。

AT24C02存储器的存储空间大小和访问方式分别是什么?读写的特点什么样?

大小为2K bit,由32页(page)组成且每页8Byte - 写操作 AT24C02支持字节写模式和页写模式。 字节写模式:就是一个地址一个数据进行写入。 页写模式:就是连续写入数据。只需要写一个地址,连续写入数据时地址会自增,但存在页的限制,超出一页时,超出数据覆盖原先写入的数据。但读会自动翻页。 - 读操作 AT24C02支持当前地址读模式,随机地址读模式和顺序读模式。 当前读模式:是基于上一次读/写操作的最后位置继续读出数据。 随机地址读模式:是指定地址读出数据。 顺序读模式是:连续读出数据。

单工通信、半双工通信以及全双工通信之间的区别?同步通信与异步通信之间的区别

通信方式 定义 方向 示例
单工(Simplex) 通信只能单向进行,一方始终为发送端,另一方始终为接收端。 单向 广播、电视、键盘输出到电脑
半双工(Half-Duplex) 双方都可以发送和接收,但不能同时进行,一次只能一方发送。 双向但不能同时 对讲机(Walkie-Talkie)
全双工(Full-Duplex) 双方可以同时发送和接收数据。 双向且同时 电话、网络通信
类型 定义 特点 时钟信号 适用场景 示例
同步通信(Synchronous) 发送方与接收方数据传输基于统一的时钟,按照节奏发送接收。 实时性强,效率高 需要共享或提供时钟 高速通信,如串行总线(SPI) DDR内存、SPI通信
异步通信(Asynchronous) 不使用统一时钟,通过起始位和停止位来确定数据边界。 灵活简单,但效率低 无需共享时钟 低速或不连续通信 UART串口通信、键盘输入

使用USART1串口进行通信,已知波特率,如何设置分频系数?

USART1使用APB2总线,根据APB2总线的频率和波特楼设置分频系数: \[ USARTDIV = \frac{f_{APB2}}{16\times BAUD} \]

定时器

定时器的溢出时间公式,并简述其计数原理

\[ T_{溢出}​=\frac{(ARR+1)\times (PSC+1) }{f_{TIM}} \]

定时器输出PWM信号的周期由哪个寄存器的值决定?占空比由哪个寄存器的值决定?

  • 周期:由 ARR(自动重装载寄存器)决定
  • 占空比:由 CCR(捕获/比较寄存器) 决定,如 TIMx_CCR1 ## STM32定时器的自动重装载寄存器是16位的,所以自动重装载值可设置范围是? 0~65535 ## 基本定时器的时基单元寄存器包含哪些部分?
  • PSC(预分频器):TIMx_PSC
  • ARR(自动重装载寄存器):TIMx_ARR
  • CNT(计数器):TIMx_CNT

影子寄存器的特点;

修改 ARR、PSC 等寄存器时不会立即生效,而是等下一个更新事件时才生效。 ## STM32的常规定时器主要分为哪三种?各自区别。

定时器类型 主要功能
基本定时器 没有输入输出通道,常用作时基,即定时功能
通用定时器 具有多路独立通道,可用于输入捕获/输出比较,也可用作时基
高级定时器 除具备通用定时器所有功能外,还具备带死区控制的互补信号输出、刹车输入等功能(可用于电机控制、数字电源设计等)

PWM输出比较模式的编程实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void TIM3_PWM_Init(uint16_t arr, uint16_t psc)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); // 开启时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // GPIOA 时钟

GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // 复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructure.TIM_Period = arr;
TIM_TimeBaseStructure.TIM_Prescaler = psc;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = arr / 2; // 占空比50%
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OC1Init(TIM3, &TIM_OCInitStructure);

TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);
TIM_Cmd(TIM3, ENABLE);
}

ADC

ADC的主要类型有哪些?它们各有什么特点?

ADC电路类型 优点 缺点
并联比较型 转换速度最快 成本高、功耗高,分辨率低
逐次逼近型 结构简单,功耗低 转换速度较慢

ADC性能的特性参数主要包括哪些?

特性 描述
分辨率 表示ADC能辨别的最小模拟量,用二进制位数表示,比如:8、10、12、16位等
转换时间 表示完成一次A/D转换所需要的时间,转换时间越短,采样率就可以越高
精度 最小刻度基础上叠加各种误差的参数,精度受ADC性能、温度和气压等影响
量化误差 用数字量近似表示模拟量,采用四舍五入原则,此过程产生的误差为量化误差

ADC转换时间的定义?

表示完成一次A/D转换所需要的时间,转换时间越短,采样率就可以越高。

ADC采样时间和转换准确度以及转换速度的关系

采样时间越长, 转换结果相对越准确, 但是转换速度就越慢

ADC该如何配置复用的GPIO

GPIO应该配置为模拟模式GPIO_MODE_AIN

复习课注记

问磊 02:00 嵌入式系统和通用的计算机系统的这个区别,大家可以去回忆一下我们的 PPT 上面其实是给了一个嵌入式操作系统和通用计算机系统的这样的一个比较的有一页 PPT 是专门讲的是嵌入式操作系统的一个结构,包括哪几层?那其实我们上课也提到过,包括设备的驱动层,操作系统层以及应用软件层,那这个就是我们去讲这个嵌入式操作系统的时候会提到的,然后另外的包括还有我们嵌入式操作系统,包括哪一些种类常见的种类。 问磊 02:39 到比如说是我们的这个 windows 也有对应的,包括我们的安卓,这些都属于一个操作嵌入式的操作系统,大家要去了解一下有哪些类别。那这个是嵌入式系统的这一部分是关系到我们所学习的这个 st m32的一个简介,比如说我们这个 st m32。它的一个侵入系统,它的属时钟主要包括哪四种,它使用的这个时钟源是,比如说外部的内部的这样的一个金正是外部高速的低速的是内部高速的低速的就是我们这个 st m32芯片的这样的一个时钟数,包括我们的 APP。a P b2哪一个是72兆赫兹哪是36兆赫兹,他们所挂载的这些外设串口,这个要有一系列的了解,第三个就是关于波特率的一个定义,我们要知道怎么样去根据我们的这个波特率去计算我们要设置的这样的一个分频系数。那是肯定会考到的,有可能是在我们的选择题里面考,也有可能在填空题里面让大家去算怎么样,根据我们需要的这样的一个波特率去算对应的这样的一个分频系数的一个大小。 问磊 03:53 第四个是关系到我们这个嵌入式系统正常工作的这个最小系统的这样的一个组成单元。那我们上课也提到过,包括我们嵌入式的芯片,包括外围的电源供电的电路,以及晶振的电路,还有复位电路以及 boot 启动电路,还有下载调试电路等等。另外一个要重点去关注的就是我们前面讲的这个 st m32芯片,它的内核,它的指令集,它们之间的这样的一个关系,包括它的架构就千万不要把它去混淆了。比如说我们这个 codex 内核。它是有三个架构版本的,包括我们的 MAR 分别对应到不同的应用场景,那分别对应到哪些应用场景,这个也需要大家去有一定的这样的了解就大概知道这样的一个型号。比如说我们的 context m3其实就是基于 R v7杠 M 的这样的一个架构的一个版本。然后另外就是我们这个哈佛结构以及弗洛伊曼结构之间的一个区别。其实上课也是提到过的,大家就学到大三了,还不知道自己再去百度一下。 问磊 05:06 再然后就是讲了这个 here 库,那比如说我们可以去问我们这个 st m32提供了哪些库函数,那包括我们讲到的标准库,我们也可以直接去操作寄存器就是这个 here 库,还有 LL 库,然后以及我们这个库当时讲了花了很大的一个。篇幅去讲我们这个文件夹里面所包含的一系列的点 H,以及点 S 文件它的一个作用。那这个大家也要去稍微去回顾一下,包括我们在新建一个工程当中所必须要有的是哪一些点 H 点 S 的文件,哪一些是不必要的。比如说我们的 name 点 H,那这个就是属于一个不必要的这样的文件。 问磊 05:49 再就是我们的 GPIO 这一章了 GPIO 这一章其实也是我们重点考察的一个内容,我们讲到了 st m32它是有。就是不同的芯片有很多的这样的一个引脚的,那我们可以对引脚去做一个分类,包括它的电源引脚,它的金正引脚部位引脚布特引脚下载引脚,然后剩下来的都是 G PR O 引脚。那我们对于 GPIO 的一个定义以及它的一个作用要有一个了解,然后我们讲到 GPIO,它是有八种不同的工作模式的。我们要了解这八种不同的工作模式,分别应用于什么样的一个场景。 问磊 06:28 以及它的,因为我们里面是有复用的,那复用的这样的一个模式有哪几种,包括比如说我们的这个开路的复用以及推碗的复用等等。就是一系列的电器特性,我们也讲到这个 GPIO 口,它能够单个 IO 口所能够承受的最大的这样的一个电流。是25毫安,然后它的一个能承受的最大的这样的一个输入电压其实是分为两种的,一种是比如说3.3伏,还有可能是五伏这样的一个高压的一个情况,其实根据我们是 cmos 的这样的一个电压,还是说 TTL 的这样的一个电压是有这样的一个区别的。 问磊 07:04 我们这个编程题会考一道关于这个 GPIO 的,那是其实主要就是我们上课讲的两种,一个是把我们的 GPIO 作为一个输入去控制我们 LED 灯的这样的一个亮面。通过我们的 GPIO 输出去控制我们的 LED 灯的亮面,或者说去通过我们的按键的这样的一个输入,然后再去控制 LED 灯的这样的一个亮面。那这里面主要就是要去大家要去搞懂我们所使用的这样的一个。GPIO 的这样的一个模式,包括它的一个上下拉等等。这个一定要搞清楚,到时候我们也会给出对应的这样的一个电路图,大家去根据电路图去判断我们这个 GPIO 所使用的模式。主要是对初始化的代码去做一个编写,是在对于我们的这个 GPIO 的这个初始化的一个代码去做一个编写,包括它的模式上下拉,还有高速,低速等等去做这样的一个选择的。

问磊 08:09 在后面就是关系到我们的这个中断。那中断,其实主要包括几个,首先是我们这个 st m32微控制器的这个中断优先级的一个规则。当然这里面其实也包含了我们这个 st m32。它的一个中断优先级的种类。那其实我们上课也提到,包括抢占优先级,响应优先级以及自然优先级,那它怎么样去判断三个优先级,怎么样去进行一个协调,那我们的 st m32在中断的一个优先级的判断过程当中?他首先是去看他的抢占优先级,那抢占优先级相同的情况下,我们再去看它的响应优先级,这个时候响应优先级高的先执行。那如果说我们的抢占优先级和响应优先级都相同的话,那这个时候,我们就要去看它的自然优先级越高的,它就越优先去进行1个执行。那除了关于我们这样的一个中断优先级的判断以外,我们中断部分还有两个概念,一个是 mv I C 一个是 ETI。 问磊 09:19 那 NVIC 它是嵌套向量中断控制器。那它是 context m3内核的一个一部分。那它主要是负责管理所有的中断,包括内核和片商外设的中断。那这个 ETI 它其实是 st m32。特有的这样的一个外设叫做外部中断,或者说外部事件控制器。那它主要是用于管理映射到我们这个 GPIO 引脚上的这样的一个外部中断,以及少量的这样的一个片内的集成的这样的一个外设中断的。一定要理解清楚这个 NVIC 和 ESTI 它们之间的。这样的一个区别,再往后就是关系到我们的串口,那串口,其实我们讲了很多种,包括我们的 us art U art sp ifc,那我们要了解这些之间的一个区别,比如说我们的 FOC 它是由时钟线 SCL。和数据线 SDA 去组成的,而且每一个都是去接了一个上拉的这样的一个电阻的,而且我们要去确保总线在空闲的状态的时候是这样的一个高电平,那它是一种双向的串行的,同步的这样的一个通信协。那 us art,它是结合了同步和异步通信的这样的一个功能,所以它是可以根据我们的需求去进行一个同步和异步的这样的一个配置的。我们这个 us art 和 U art 之间的一个区别,大家也一定要弄清楚。

问磊 10:47 另外,还有我们的这个 SPI 那 SPI,它是以主从的方式去进行工作的,它至少是需要有四根信号线的,包括 M os im iso 以及我们的这个时钟线 S clock 以及我们的 CS 这样的一个片选的这样的一个信号线。它是一种高速的全双工的同步的,这样的一个通信协议。所以我们一定要掌握好我们这个 USSP IFC 之间的一个区别,包括各自对应的所使用的这样的一个信号线,有哪一些信号线,就是关于我们这个一方,我们的存储器,那它?有什么样的一个特点,大家一定要去了解我们所使用的这个 atr c02存储器,它的一个存储空间的一个大小,包括它的一个命名的方式,以及它的一个访问的方式,还有它的一个读写的这样的一个特点。 问磊 11:42 除此以外,还有比如说我们的一些基本的概念,像这个单工通信,半双工通信,全双工通信之间的一个区别,同步和异步之间的一个区别,这个我在上课的时候也喊同学去回答过,大家在学单面积基础的时候,也是学过相关的这样的一个。内容的到时候比如说我们可以出一个简答题,让大家去解释一下它们之间的一个区别。然后另外就是关于我们这个已知波特率去怎么样设置这样的一个分频系数的,这个我们前面其实也提到过,这个一定要去掌握。 问磊 12:20 关系到我们的定时器,那定时器其实就是我们前一段时间刚讲完的可能大家还是有一些印象的,包括我们要掌握的是定时器的这个溢出时间的一个公式,并且去简述它的一个技术的原理,因为我们的这个定时器。尤其是对于我们的通用定制器,它是有不同的这样的一个模式的,到底是使用输入补货模式还是使用输出比较模式,那我们使用输出比较模式的时候,可以用来去输出一个 PWM 的这个信号。那这个 PWM 信号的这个周期,它是由哪一个寄存器是?去决定的,然后占空比是由哪一个寄存器决定的,大家一定要搞清楚,因为我们另外一道编程题,它就是以这个。 问磊 13:11 定时器为主的,包括我们的输入,捕获以及输出比较的,那我们一定要弄清楚它们之间的一个原理,尤其是对于我们的定时器初始化的时候,里面各种各样的参数,或者说我们那个结构体。 问磊 13:27 它到底该怎么样设置这个其实是我们编程的时候考察的这样的一个重点。然后另外还有一些,比如说选择填空可能去考察到的,我们这个 st m32它的定时器里面的这个自动重装载寄存器,它的一个重装载值的一个范围,那它是16位的,那我们二的16次方,然后对应的。可以去推算一下它的一个设置的范围。我们的框图里面,关于我们这个基本定时器,它的一个实际单元的寄存器包括哪些,包括我们的 CN T,包括我们的这个 AR 自动重装载寄存器等等。我们也提到这个。预分屏技术的这个寄存器以及我们的这个 ARR 的自动重装载寄存器,它都是有影子寄存器的,那我们这个影子寄存器的特点是什么?我们的用户没有办法直接去对它进行一个操作的。我们这个影子寄存器对应的是否启用,是使用是对应到哪一个标志位上面的哪计算器对应的标志位上面的这个也要有一定的了解。包括我们也给出了一个比较,因为我们也讲到 st m32的常规定时器,包括基本定时器,通用定时器以及高级定时器,那这三者之间的一个区别,大家也要去了解一下,那这个可能是我们的简答题会去考察的一个内容。 问磊 14:56 然后最后就是 ADC ADC,相对来说考察的内容会少一些,因为我们最后讲的时候讲的部分其实相对来说也是比较少的,只讲了比较基础的这样的一个单通道的这样的一个转换。那 ADC,我们这边就主要还是以。选择填空或者说判断为主,包括它的一个主要类型有哪些各自有什么一个特点,它的一系列的性能的这样的一个特性参数,包括它的分辨率就是多少位等等,主要包括哪一些各自的这样的一个定义。还有我们这个 ADC 的一个转换时间的一个定义,这个包括对应的我们这个转换时间怎么样去算的,这个也要去了解一下,就是我们在讲 PPT 里面其实也有对应的寄存器怎么样去设置它的一个采样时间的。然后包括采样时间以及我们的转换的一个准确度,还有转换速度之间的一个关系。那采样时间,其实是可以去提升我们的这样的一个转换准确度的,但是也会去牺牲我们的这样的一个转换速度。 问磊 16:06 然后包括我们这个 ADC 如何去配置复用的这样的一个 GPIO,那这个其实很简单,就是把我们的 GPIO 口去配置为复用的这个 ADC 的这样的一个模式。这个大家去回顾一下我们的这个 GPIO 口的一个八个工作模式的里面其实就有一个。复用于我们这个 ADC 的这样的一个输出的这样的一个模式。那以上就是给大家大概的去拎了一下我们每一个章节可能去考的一些内容,大家其实可以根据 PPT 就是如果说已经知道的这个就可以直接过了。那如果不清楚的,大家再去根据 PPT 去寻找一下对应的答案。 问磊 16:48 那我们这个试卷的内容相对来说也是比较简单的,希望大家最后都能拿到一个好的成绩,那我们这个整个的一个复习的内容就大概这就这一些,然后有问题的话可以就是在课后就我们考试之前再找时间就是可以直接去办公室找我,也可以直接在线上来问。还有一个之前说要把那个 PWM 的一个比较模式输出比较,以及我们前面讲的这个输入补货模式的这个编程实例。回头,我也会发在群里面给大家去作为一个参考。 问磊 17:31 复习课的内容就这么多。

下面是javascript测试
click me!
0

嵌入式系统复习重点
https://piececao.github.io/2025/06/30/嵌入式系统 复习重点/
Beitragsautor
Piececao
Veröffentlicht am
30. Juni 2025
Urheberrechtshinweis