导论
1.嵌入式系统(Embedded system)是一种特定用途的计算机系统,通常嵌入在其他设备或系统中,用于控制、监测、处理和执行特定的功能。它由硬件和软件组成,被设计成在严格受限的环境中运行,具有实时性、可靠性和高效性等特点。
2.STM32是 STMicroelectronics(意法半导体)推出的一系列 32 位 ARM Cortex-M 微控制器产品系列。它们广泛应用于嵌入式系统和物联网(IoT)应用中。STM32 微控制器提供了丰富的外设和功能,以满足不同应用领域的需求。
ARM(Advanced RISC Machines)是一家英国公司,现在是日本的 SoftBank Group 的子公司。ARM 的主要业务是开发和许可处理器技术,特别是低功耗、高性能的 ARM 架构处理器。ARM是设计芯片而不是卖芯片。
3.F1系列满足工业,消费电子,医疗设备的用途,是主流系列
4.AHB 和 APB 总线
AHB(Advanced High-performance Bus)是一种高性能总线,用于连接处理器和高带宽、低延迟的主要系统组件,如存储器、高速外设等。
APB 是一种较为简单和低功耗的总线,主要用于连接较低带宽、较高延迟的外设,如 GPIO(通用输入 / 输出)、定时器等。
AHB总线用于连接高速外设/存储区,而APB总线用于链接低速外设/存储器。
5.DMA
DMA (Direct Memory Access,直接内存访问 ) 是一种计算机系统中的数据传输技术 ,它允许外部设备(如硬盘、网络适配器等)直接与内存进行数据交换 ,而无需中央处理器 (CPU) 的干预,提高CPU响应速率。
6.最小嵌入式系统
最小嵌入式系统是指一个具有基本功能的简化的嵌入式系统,它包括必要的组件和资源,以实现特定的任务或功能,并尽可能减少硬件和软件的复杂性与资源消耗。
一般包含三个部分:
- 电源电路
- 复位电路
- 晶振电路

VCC正极,VSS负极
GPIO
1.GPIO 全称: General-Purpose Input/Output
功能:
控制外部设备、模拟输出、脉冲生成、//输出
读取开关、读取传感器数据、外部中断检测//输入
模拟和数字:
模拟信号连续变化的信号
数字信号是离散的信号,在模拟信号上采样可以得到数字信号
2.GPIO的引脚
引脚编号采用 "Px:y" 的格式,其中:P 表示引脚端口号,x 表示引脚号,y 表示引脚的多功能编号。
例如,PA4 表示端口 A 的第 4 号引脚,PB10 表示端口 B 的第 10 号引脚。
3.请简要描述 STM32 的 GPIO 引脚复用功能是什么?
STM32 微控制器的 GPIO 引脚具有多种功能,可以配置为复用功能。
复用功能允许一个 GPIO 引脚在不同的外设之间切换使用。
通过使用适当的寄存器配置,可以将 GPIO 引脚用作串口通信、定时器、I2C 总线、SPI 总线等外设的通信线路。
4.施密特触发
定义:
施密特触发(Schmitt Trigger)是一种基础的电子电路,用于处理输入信号的噪声和干扰,并产生稳定的输出信号。采用了正反馈回路,具有阈值的特性,使得输入信号在输入阈值上升时产生输出翻转。
触发条件:
当输入信号超过正向门限(高阈值)时,触发器的输出会变为高电平;
上拉电阻,下拉电阻,浮空
1.上拉电阻
上拉电阻(Pull-up resistor)是一种电阻器连接在数字电路的输入引脚上,用于提供默认的高电平信号,以确保输入引脚在没有外部信号驱动 时保持在高电平状态。
2.浮空状态
浮空状态是指一个电路或信号线在没有明确的驱动或连接到固定电平时所处的不确定状态。在浮空状态下,电路或信号线的电平可能会受到环境干扰或电源波动的影响,导致无法确定信号的准确状态。
3.下拉电阻
下拉电阻(Pull-down resistor)是一种电阻器连接在数字电路的输入引脚上,用于提供默认的低电平信号,以确保输入引脚在没有外部信号驱动时 保持在低电平状态。
GPIO的八种模式

2.MOS管
相当于一个开关电路

3.推挽输出

4.开漏输出

5.开漏的典型应用线

6.复用的意义
在数字电路中,信号复用是一种技术,通过共享相同的物理引脚来传输多个信号。
这种技术可以节省引脚数量,提高系统的灵活性和效率。复用推挽输出是其中一种常见的复用方式,它使用推挽输出器来驱动共享的物理引脚。

寄存器
1.GPIOx_MODER(GPIO Mode Register):
此寄存器用于配置引脚的工作模式(输入或输出);每个引脚都有两个位用于设置其工作模式。
例如:00 表示引脚为输入模式,01 表示引脚为输出模式
2.GPIOx_OTYPER(GPIO Output Type Register):
此寄存器用于配置输出引脚的输出类型。
例如:对于开漏输出(Open Drain)或推挽输出(Push-Pull)
3.GPIOx_OSPEEDR(GPIO Output Speed Register):
此寄存器用于配置输出引脚的输出速度。
可以选择引脚的输出速度(低、中、高等级)以适应具体的应用要求。
4.GPIOx_PUPDR(GPIO Pull-Up/Pull-Down Register):
此寄存器用于配置上拉或下拉电阻(Pull-Up/Pull-Down Resistor)的状态。
可以选择是否启用上拉或下拉电阻,或者禁用它们。
5.GPIOx_IDR(GPIO Input Data Register):
此寄存器用于读取输入引脚的状态。每个位对应一个引脚,可以通过读取相应位的值来获取输入引脚的状态。
中断
1.什么是中断:ISR
在STM32系列微控制器中,
中断(Interrupt)是一种重要的机制,用于实时响应外部事件或内部事件的发生。
中断允许微控制器在执行程序的过程中, 根据需要暂停当前任务,处理中断事件,然后返回到原来的任务继续执行。


3.中断函数是怎么保存的?
在 STM32 中,中断向量表(Interrupt Vector Table)是一张存储中断处理函数地址的表格。它是一个特殊的数据结构,用于将特定的中断向量与相应的中断服务子程序(Interrupt Service Routine,ISR)关联起来。

5.中断分类
外部中断,定时器中断,UART中断,DMC中断,ADC中断
6.触发方式

7.中断线

8.NVIC
如果中断都来了,哪个中断先执行,如果正在中断,再来一个中断会怎样?
NVIC(Nested Vectored Interrupt Controller)是 STM32 微控制器中的中断控制器。用于管理和控制中断。NVIC 是一个硬件模块,用于处理和分配中断请求,并决定哪个中断优先级最高,并且能够响应最高优先级的中断。

9.中断优先级
在 STM32F 系列微控制器中,中断优先级的分配是根据优先级组(Priority Group)进行的。
优先级组决定了抢占式优先级(Preemption Priority)和子优先级(Subpriority)所占用的位数。
通常,STM32F 系列微控制器支持 4 种优先级组配置,分别是: (记住四个优先级组就够,记下规律)
- **优先级组 0:**0 位抢占式优先级、4 位子优先级。
- **优先级组 1:**1 位抢占式优先级、3 位子优先级。
- **优先级组 2:**2 位抢占式优先级、2 位子优先级。
- **优先级组 3:**3 位抢占式优先级、1 位子优先级。

问题2:中断3停止,运行中断2或中断8
10.简要解释 STM32 中断优先级的概念以及如何配置中断优先级。
STM32 中断优先级指定了在多个中断同时发生时,处理器选择响应优先级最高的中断。较高优先级的中断可以打断较低优先级的中断。
可以使用 NVIC 库函数中的 NVIC_SetPriority 函数来设置中断的优先级。
通过指定优先级分组方式和具体的优先级值,可以配置中断的优先级。
较低的数值表示较高的优先级。
11.中断设置流程
-
选择中断线和引脚:确定要使用的中断线和相应的引脚。在 STM32 中,不同的引脚可以与不同的中断线相关联。
-
配置引脚:将选定的引脚设置为中断模式。
-
设置触发时机(上升沿、下降沿、双边沿或低电平触发)。
-
配置中断控制器:STM32 具有中断控制器负责管理和控制中断。使用寄存器和相应的位操作来配置中断控制器。主要的中断控制器寄存器包括 NVIC(Nested Vectored Interrupt Controller)。
-
编写中断服务程序:编写中断服务程序(Interrupt Service Routine,简称 ISR)。这是一段特殊的代码,用于处理中断事件。在中断发生时调用并执行 ISR。确保 ISR 尽可能地简洁高效,以便快速完成中断处理并返回到主程序。
定时器



4.多级分频

结论: (理解)
频率越高时间分辨率越高,但是计数器的计数上限有限,所以表达的最大时间也有限。频率越低恰好相反。
为什么要理解因为不同教材对这个问题的专用名词不一致,只有理解了现象,才能根据选项推出哪个最接近上面的表达。