嵌入式系统复习要点

news2024/11/18 13:54:54

目录

1、嵌入式系统的核心部分主要由硬件和软件两部分组成:

2、嵌入式系统硬件:

3、嵌入式处理器从体系上分类,可以分为冯·诺依曼结构和哈佛结构两种:

4、几类常见的嵌入式处理器类型:

5、MCU组成结构:

7、DSP组成结构:

8、SoC组成结构:

9、MPU组成结构:

10、嵌入式系统的开发流程概要:

11、面向硬件的开发模式:

12、面向软件的开发模式:

13、嵌入式应用软件开发过程:

14、ARM处理器的特点:

15、ARM Cortex-M3结构:

16、特权级别和操作模式:

17、特权分级和操作模式间的切换:

18、Cortex-M3存储器系统功能特性:

19、Cortex-M3存储器映射:

 20、位带操作:

21、端模式:

22、中断和异常:

23、低功耗模式:

24、ARM Cortex-M3 指令集:

25、STM32系列微控制器简介:

26、STM32F1命名规则:

27、总线结构:

28、存储空间组织:

29、STM32启动配置:

30、STM的复位模式:

31、STM32的系统时钟:

32、STM32时钟树配置流程:

33、STM32时钟树配置函数:

34、STM32电源:

35、STM电源管理工作模式:

36、微控制器最小系统:

37、基于CMSIS标准的应用软件基本架构:

38、CMSIS 标准软件架构:

39、STM32F10x标准外设库体系结构:

40、STM32F10x标准外设库外设名称缩写定义:

41、GPIO的基本概念:

42、STM32F10x微控制器的GPIO:

43、GPIO的工作模式:

44、STM32 GPIO配置操作:

45、STM32 GPIO位带操作:

46、常用的 GPIO 操作库函数:

47、使用标准外设库函数操作GPIO的一般步骤:

48、STM32F10x 微控制器的 GPIO 提供三种输出速度选项,以便在不同应用场景中调整性能和功耗:

49、中断的基本概念:

50、STM32的嵌套向量中断控制器NVIC:

51、STM32中断优先级判别实例:

52、STM32 NVIC配置常用库函数:

53、STM32的外部中断/事件控制器EXTI:

54、STM32 EXTI常用库函数:

55、STM32的定时器类型、数量与用途:

56、SysTick定时器相关库函数:

57、SysTick定时器的定时时间计算:

58、看门狗的概念与作用:

STM32独立看门狗IWDG:

STM32窗口看门狗WWDG:

两种看门狗区别:

59、STM32 通用定时器:

60、DMA的基本概念:

61、DMA优缺点与应用 :

61、STM32 DMA控制器主要特性:

62、STM32 DMA寄存器:

DMA_CPARx:

DMA_CMARx:

DMA_CNDTRx:

63、STM32 DMA 通道优先级:

64、DMA要点&易错点归纳&例题:

65、串行通信的基本概念:

1、同步通信

2、异步通信

3、单工通信

4、半双工通信

5、全双工通信

6、异步串行通信的波特率

66、异步串行通信相关标准:

1、异步串行通信的帧结构

2、串行通信中的校验与纠错方式

67、USART分数波特率的产生:

68、USART数据帧格式:

69、USART的状态标志和中断:

70、USART配置:

71、SPI总线概述:

72、SPI接口信号:

73、SPI通信互连方式 :

74、SPI工作模式(传输时序):

75、SPI数据传输速率和数据格式:

76、SPI易错点:

77、I2C总线概述:

78、I2C接口信号:

79、I2C总线主要特点:

80、I2C与SPI的简单比较 :

81、I2C易错点:

82、1-Wire单总线概述:

83、1-Wire单总线典型通信流程:

84、利用GPIO模拟1-Wire总线注意点:

85、STM32 FSMC接口概述:

86、STM32 FSMC地址映射:

87、FSMC公用信号:

88、FSMC易错点:

89、模拟数字转换器ADC:

90、模拟数字转换器DAC:

91、CAN总线概述 :

92、STM32 bxCAN:


1、嵌入式系统的核心部分主要由硬件和软件两部分组成:

2、嵌入式系统硬件:

3、嵌入式处理器从体系上分类,可以分为冯·诺依曼结构和哈佛结构两种:

区别:指令和数据的存储位置

4、几类常见的嵌入式处理器类型:

嵌入式微处理器
MPU
嵌入式微控制器
MCU
嵌入式数字信号处理器
DSP
嵌入式片上系统
SoC

5、MCU组成结构:

7、DSP组成结构:

8、SoC组成结构:
 

9、MPU组成结构:

10、嵌入式系统的开发流程概要:

11、面向硬件的开发模式:

12、面向软件的开发模式:

13、嵌入式应用软件开发过程:

14、ARM处理器的特点:

15、ARM Cortex-M3结构:

16、特权级别和操作模式:

17、特权分级和操作模式间的切换:

18、Cortex-M3存储器系统功能特性:

19、Cortex-M3存储器映射:

 20、位带操作:

21、端模式:

绝大多数情况下, 基于 Cortex-M3 的微控制器都使用小端格式。

22、中断和异常:

23、低功耗模式:

24、ARM Cortex-M3 指令集:

25、STM32系列微控制器简介:

26、STM32F1命名规则:

27、总线结构:

APB1 操作速度限于36MHz, APB2 操作于全速 ( 最高可达 72MHz)

28、存储空间组织:

29、STM32启动配置:

STM32F10x 中,有 3 种不同的启动模式,可以通过引脚BOOT[1:0]来选择。

30、STM的复位模式:

STM32 的复位操作共有三种复位方式。

31、STM32的系统时钟:

注意:对于异步通信、定时采样等需要精确定时的应用, HSI 的频率精度是不够的。

32、STM32时钟树配置流程:

33、STM32时钟树配置函数:

RCC_AHBPeriphClockCmd(u32 RCC_AHBPeriph,FunctionalState NewState);//使能或者失能AHB外设时钟
RCC_APB2PeriphClockCmd(u32 RCC_APB2Periph,FunctionalState NewState); //使能或者失能APB2外设时钟
RCC_APB1PeriphClockCmd(u32 RCC_APB1Periph, FunctionalState NewState); //使能或者失能APB1外设时钟

34、STM32电源:

35、STM电源管理工作模式:

36、微控制器最小系统:

最小系统,指使用最少的电子元件使微控制器正常工作的系统。主要包括嵌入式微控制器芯片、电源电路、时钟电路、复位电路和调试接口。

37、基于CMSIS标准的应用软件基本架构:

38、CMSIS 标准软件架构:

39、STM32F10x标准外设库体系结构:

40、STM32F10x标准外设库外设名称缩写定义:

41、GPIO的基本概念:

42、STM32F10x微控制器的GPIO:

注意:STM32上,除特殊功能的管脚外,其他所有的管脚都可以作为GPIO使用。

43、GPIO的工作模式:

口诀:浮空上下模拟入,开推输出赢天下。 开推复用功能多,I2C、USART、SPI便捷多。

44、STM32 GPIO配置操作:

45、STM32 GPIO位带操作:

46、常用的 GPIO 操作库函数:

1、初始化和配置 GPIO:

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);

2、读取 GPIO 引脚输入状态:

uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

3、读取 GPIO 输出数据寄存器:

uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);

4、设置 GPIO 输出引脚的状态:

void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct);

47、使用标准外设库函数操作GPIO的一般步骤:

示例:

GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO初始化结构体变量
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //使能PORTA时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //KEY0对应的引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化GPIOA2

48、STM32F10x 微控制器的 GPIO 提供三种输出速度选项,以便在不同应用场景中调整性能和功耗:

  • 2 MHz:低速输出
  • 10 MHz:中速输出
  • 50 MHz:高速输出

49、中断的基本概念:

50、STM32的嵌套向量中断控制器NVIC:

STM32 NVIC Cortex-M3 内核 NVIC 的子集,只使用 CM3 内核NVIC 的一部分。
内核异常中断
可屏蔽中断
同上,可屏蔽中断续表1
同上,可屏蔽中断续表2
NVIC中断优先级及其分组实现

51、STM32中断优先级判别实例:

52、STM32 NVIC配置常用库函数:

注意:整个系统执行过程中,只设置一次中断分组。

53、STM32的外部中断/事件控制器EXTI:

通过 “外部中断 / 事件控制器”(EXTI, External interrupt/event controller 同时监视和检测多个GPIO 管脚上的电平变化。
其特性:
1、 每个 IO 都可以作为外部中断输入;
2、 每个中断 / 事件都可以独立地配置其触发事件(上升沿、下降沿或双边沿),并能够单独地被屏蔽;
3、 每个中断线都有专用的状态位(挂起请求寄存器),保持着其中断请求;
4、 支持多达 20 个软件的中断 / 事件请求;
5、 可以将多达 112 个通用 I/O 引脚映射到 16 个外部中断/事件输入线上;
6、 可检测脉冲宽度小于 APB2 时钟宽度的外部信号。
外部中断/事件控制器结构图

54、STM32 EXTI常用库函数:

55、STM32的定时器类型、数量与用途:

1、高级定时器:包括 2 个 16 位定时器(TIM1、TIM8),支持上/下/上下计数,用于三相 PWM 发生器(电机控制场景)。
2、通用定时器:包括 3~10 个 16 位定时器(TIM2~TIM5,TIM9~TIM14),支持上/下/上下计数,用于输入捕获、输出比较、PWM 和脉冲计数。
3、基本定时器:包括 2 个 16 位向上计数器(TIM6、TIM7),用于产生 DAC 触发信号。
4、看门狗定时器:包括一个 12 位独立看门狗(IWDG)和一个 7 位窗口看门狗(WWDG)。
5、系统时基定时器:一个 24 位 SysTick 定时器,用于产生微秒和毫秒级延时。
6、实时时钟:一个 32 位可编程 RTC 定时器,用于提供实时时钟和日历功能。

56、SysTick定时器相关库函数:

1、初始化SysTick定时器:

void SysTick_Config(uint32_t ticks);

此函数用于初始化SysTick定时器,参数ticks是定时器递减的初始值。在定时器溢出后,会自动重载此值并产生一个系统滴答时钟(System Tick)中断。

注意:ticks的最大值不能超过0x00FFFFFF。

2、获取当前SysTick值:

uint32_t SysTick_GetCurrentValue(void);

3、在使用SysTick定时器时,通常需要实现延时功能。以下是一个使用SysTick定时器实现的毫秒级延时函数示例:

void SysTick_DelayMs(uint32_t ms)
{
    uint32_t ticks = ms * (SystemCoreClock / 1000);
    uint32_t start_tick = SysTick->VAL;

    for (;;)
    {
        uint32_t elapsed_ticks = (start_tick - SysTick->VAL) & 0x00FFFFFF;
        if (elapsed_ticks >= ticks)
        {
            break;
        }
    }
}

此函数接受一个ms参数,表示需要延时的毫秒数。它首先将毫秒数转换为SysTick计数器的滴答数(ticks),然后等待指定的滴答数。

57、SysTick定时器的定时时间计算:

以例题2说明做题关键:

  1. 时钟源:需要知道 Systick 时钟源,本例中为 HCLK,即 72 MHz。
  2. 计数器最大值:Systick 定时器是 24 位递减计数器,所以最大值为 2^24 - 1。
  3. SysTick_Config() 函数:该函数用于配置 Systick 定时器,传入的参数为定时器每次溢出所需的计数。
  4. 溢出时间计算:T = ticks / 时钟频率,其中 T 为溢出时间,ticks 为每次溢出所需的计数。

58、看门狗的概念与作用:

“看门狗”本质是微控制器中的 一个计数器电路 ,它独立于软件进行计数操作,收到“喂狗”信号则复位计数值;若一直未“喂狗” ,导致计数值溢出从而产生复位。

STM32独立看门狗IWDG:

IWDG 是一个独立运行的 12 位递减计数器( downcounter ),当计数值从最大0xFFF 递减到 0 时复位 MCU
IWDG 使用独立时钟源 LSI 40KHz )。
IWDG 具有很高的可靠性,即使主时钟 SYSCLK 发生故障它也仍然有效。

STM32窗口看门狗WWDG:

初始化配置及“喂狗”操作代码

两种看门狗区别:

  1. 时钟源:

    • IWDG:独立看门狗使用独立的低速内部时钟(LSI)作为时钟源,其频率通常为 40 kHz。
    • WWDG:窗口看门狗使用系统时钟(PCLK1)作为时钟源。
  2. 计数器位数:

    • IWDG:独立看门狗具有一个 12 位向下计数器。
    • WWDG:窗口看门狗具有一个 7 位向下计数器。
  3. 工作模式:

    • IWDG:独立看门狗在计数器减至 0 时触发系统复位。要避免复位,需要在计数器溢出前通过软件“喂狗”(更新计数器值)。
    • WWDG:窗口看门狗在计数器减至窗口值(预设范围)内时,软件需要“喂狗”(更新计数器值)。如果在窗口值之外更新计数器或者计数器减至 0,系统将触发复位。这样设计可以检测软件运行过快或过慢的异常情况。
  4. 可靠性:

    • IWDG:由于使用独立的 LSI 时钟,即使主时钟出现问题,IWDG 也能正常工作。因此,IWDG 相对更可靠。
    • WWDG:使用系统时钟作为时钟源,如果系统时钟出现问题,WWDG 的可靠性可能会受影响。

59、STM32 通用定时器:

  1. 要点:

    a. 时钟源选择:确保选择适当的时钟源,并了解其对定时器时钟频率的影响。b. 时基单元配置:设置预分频器、计数器和自动重装载寄存器以生成所需的定时周期。 c. 输入捕获配置:为捕获外部信号设置合适的触发条件(上升沿、下降沿)。 d. 输出比较配置:设置输出比较寄存器的值并选择合适的输出模式(如 PWM)。

  2. 计算例题:

    例题1:假设 STM32 系统时钟为 72MHz,通用定时器 TIM3 使用内部时钟源。配置 TIM3 产生 1kHz 的 PWM 信号。

    解:首先计算预分频器(PSC)和自动重装载寄存器(ARR)的值。假设 PWM 的分辨率为 1000,那么:

    • ARR = 1000 - 1 = 999
    • TIM3 时钟频率 = 72MHz
    • PWM 频率 = TIM3 时钟频率 / ((PSC + 1) * (ARR + 1))
    • 1kHz = 72MHz / ((PSC + 1) * (ARR + 1))
    • (PSC + 1) = 72MHz / (1kHz * (ARR + 1))
    • PSC = 72MHz / (1kHz * (ARR + 1)) - 1 = 72MHz / (1kHz * 1000) - 1 = 71

    配置 TIM3 的 PSC 为 71,ARR 为 999,即可产生 1kHz 的 PWM 信号。

    例题2:使用通用定时器 TIM2 的输入捕获功能测量外部信号的周期。输入信号频率为 5kHz,STM32 系统时钟为 72MHz。

    解:计算预分频器(PSC)的值。要测量 5kHz 信号,TIM2 的时钟频率应足够高,这里假设为 1MHz。

    • TIM2 时钟频率 = 72MHz
    • 目标时钟频率 = 1MHz
    • PSC = (TIM2 时钟频率 / 目标时钟频率) - 1 = (72MHz / 1MHz) - 1 = 71

    配置 TIM2 的 PSC 为 71,使用输入捕获功能测量外部信号周期。计算测量得到的计数值与实际周期的关系:周期 = 计数值 / (1MHz)。

60、DMA的基本概念:

DMA Direct Memory Access ,直接存储器存取),是一种 完全由硬件执行数据交换 的工作方式,用来提供在 外设和存储器之间 或者 存储器和存储器之间 高速数据传输

61、DMA优缺点与应用 :

优点
1、 CPU 利用率高
2、 数据传输效率高
3、 用户软件代码开发效率高

◼ 缺点

1、 在传输时间段内对总线独占
2、 传输数据量过大时,会导致中断延时较长,不适合于实时性强,(硬实时)的应用

◼ 应用

1、 高速、成组数据的传输

61、STM32 DMA控制器主要特性:

DMA 可实现数据传输(存储器与存储器、外设与存储器等)。支持闪存、SRAM、外设的 SRAM 以及 APB1、APB2 和 AHB 外设作为源和目标。共有 12 个通道(DMA1 有 7 个,DMA2 有 5 个)。每个通道连接专用硬件 DMA 请求并支持软件触发。通道优先级可设定(很高、高、中等、低),相等时由硬件决定。

注意:可编程的数据传输数目最大为65535。

62、STM32 DMA寄存器:

DMA_CPARx:

DMA 通道 x 的外设地址寄存器。用于存储 STM32 外设数据寄存器的基地址,作为数据传输的源或目标。


DMA_CMARx:

DMA 通道 x 的存储器地址寄存器。用于存储 STM32 存储器地址,作为数据传输的源或目标。


DMA_CNDTRx:

DMA 通道 x 的传输数量寄存器。用于控制每次 DMA 传输的数据数量,其范围为 0~65535。该寄存器的值会随着传输的进行而减少,当值为 0 时,表示此次数据传输已结束。


上述寄存器用于配置和控制 DMA 通道的数据传输。DMA 通道可以实现不同外设和存储器之间的高速数据传输,而无需 CPU 的干预,从而提高系统的性能。在 STM32 中,DMA1 有 7 个通道(x = 1...7),而 DMA2 有 5 个通道(x = 1...5)。


63、STM32 DMA 通道优先级:

64、DMA要点&易错点归纳&例题:

  1. DMA 传输数据宽度:数据传输宽度指的是 DMA 一次传输的数据位宽。在 STM32 中,DMA 支持字节 (8 位)、半字 (16 位) 和字 (32 位) 三种数据宽度。选择正确的数据宽度是很重要的,否则可能导致数据错误或丢失。

  2. DMA 通道配置过程及关键参数:配置 DMA 通道主要涉及以下步骤和参数:

    • 选择合适的 DMA 控制器和通道。
    • 配置 DMA 通道的数据传输方向 (从外设到存储器或从存储器到外设)。
    • 设置数据传输宽度 (字节、半字或字)。
    • 配置源和目标地址递增模式 (如果需要在多个地址之间传输数据)。
    • 设置循环模式 (如果需要持续传输数据)。
    • 配置优先级 (如果有多个 DMA 通道在同时工作)。
    • 设置 DMA 触发源 (外设事件或软件触发)。
  3. DMA 触发通道:DMA 传输可以由外设事件 (如串口接收完成) 或软件触发。配置正确的触发源是保证 DMA 传输正确执行的关键。

  4. DMA 通道中断请求:DMA 传输完成或发生错误时,可以产生中断请求。通过使能相应的中断并编写相应的中断处理程序,可以实现对 DMA 传输的监控和控制。

  5. DMA 通道错误管理:DMA 在传输过程中可能出现错误,例如数据溢出、传输宽度不匹配等。为了确保系统的稳定运行,应该检查并处理这些错误,通常是通过监测 DMA 的状态寄存器并采取相应的措施 (如清除错误标志、停止传输等)。注意,在配置DMA通道前,需使能DMA时钟。


1、假设我们使用一个 DMA 通道以 8 位数据宽度将一个外设的数据传输到存储器。当 DMA 传输完成时,发现存储器中有 1000 个数据。请问 DMA 传输了多少字节的数据?

答:由于数据宽度为 8 位 (1 字节),DMA 传输了 1000 × 1 = 1000 字节的数据。


2、假设我们使用一个 DMA 通道以 32 位数据宽度从存储器传输数据到外设。我们需要传输 5000 字节的数据。请问需要配置 DMA 传输的数据数量是多少?

答:由于数据宽度为 32 位 (4 字节),所以需要传输的数据数量为 5000 / 4 = 1250。


3、假设我们使用一个 DMA 通道以 16 位数据宽度将一个存储器的数据传输到另一个存储器。传输过程中,DMA 控制器的源地址从 0x2000_0000 递增到 0x2000_012C。请问 DMA 传输了多少字节的数据?

答:源地址递增量为 0x2000_012C - 0x2000_0000 = 0x12C。由于数据宽度为 16 位 (2 字节),所以 DMA 传输了 0x12C × 2 = 0x258 字节的数据。


65、串行通信的基本概念:

选择用 USART 串口作为调试手段 ,可以测试 系统的运行状态。

1、同步通信

同步通信是指在发送端和接收端之间需要同步时钟来进行同步的数据通信方式。即在传输过程中,通信的两端需采用 同 一时钟 来同步传输的数据。

2、异步通信

异步 通信是指发送端和接收端之间 无须同步时钟 的数据通信方式。就是在传输信道的两端(收方和发方)可以用 各自的时钟 ,而不需要用同一个时钟来同步两端的通信事件和通信过程。

3、单工通信

单工通信方式:是指数据只能单向传送,由发送方传输到接收方,任何时候都不能改变数据的传送方向。

4、半双工通信

是指在同一条通路上数据可以双向传输,但在同一时刻这条通路上只能有一个方向的数据在传输,即分时双向传输。

5、全双工通信

全双工通信方式:是指使用不同通路实现数据在两个方向上的同时传输,它要求通信双方都具有独立的接收和发送能力。

6、异步串行通信的波特率

66、异步串行通信相关标准:

1、异步串行通信的帧结构

1、 串行通信中,信息必须经过组装后才能在线路上传输,信息组装的最小形式称为数据帧(Frame )。
2、一个数据帧通常由起始位、数据位、校验位、停止位等 4 个部分组成,由起始位开始,至停止位结束,每帧传输一个字符。
3、 在一个数据帧中,起始位为 1 位,数据位可为 5-9 位,校验位可有可无,而停止位可以是0.5 1 1.5 2 位。

2、串行通信中的校验与纠错方式

67、USART分数波特率的产生:

68、USART数据帧格式:

数据位长度: 8 位或 9

69、USART的状态标志和中断:

70、USART配置:

71、SPI总线概述:

注意:SPI通信最大特点是由主机设备完全控制时钟信号并决定主从设备的通信。

72、SPI接口信号:

73、SPI通信互连方式 :

74、SPI工作模式(传输时序):

区别

75、SPI数据传输速率和数据格式:

模式1、3均是:数据格式为8位数据帧,低位(LSB)在前,高位(MSB)在后;

模式2、4则是:数据格式为8位数据帧,高位(MSB)在前,低位(LSB)在后。

76、SPI易错点:

1、SPI1位于高速APB2总线上,其他的SPI(如SPI2、SPI3)位于APB1总线上。
2、可编程的数据顺序,MSB在前或LSB在前。
3、8或16位传输帧格式选择。

77、I2C总线概述:

由数据线 SDA 和时钟线 SCL 两根信号线构成,以 同步半双工 的方式进行接收或发送数据。

78、I2C接口信号:

注意:由于I2C总线(SCL和SDA)采用集电极开路或漏极开路的输出方式,连接到I2C总线上的任何器件都只能使SCL或SDA置0,因此必须在SCL和SDA上外加上拉电阻,使两根信号线进行置1,才能正确进行数据通信。

79、I2C总线主要特点:

80、I2C与SPI的简单比较 ​​​​​​​:

81、I2C易错点:

1、只有在 SCL 线为低电平期间,才允许 SDA 线上的电平改变状态。
2、 一次完整的I2C数据通信,通常由起动信号、从机地址传输、数据传输和停止信 号组成。
3、数据传输以字节(8 bit)为单位,主设备在SCL线上产生每个时钟脉冲的过程中同时在SDA线上传输一个数据位,并按照高位(MSB)在前、低位(LSB)在后的顺序进行传输。
4、所有的I2C均位于APB1总线上。
5、支持不同的传输速率:标准(最高100 kbps)&快速(最高400 kbps)。
6、在一个字节传输的8个时钟后的第9个时钟期间,接收器必须回送一个应答位(ACK)给发送器。

82、1-Wire单总线概述:

一种半双工串行通信连接总线,它采用单根信号线, 既传输数据位 又传输数据位的定时同步时钟 ,同时又能以 寄生供电 的方式给总线上的器件提供电源。这条 数据线被地址、控制及数据信息复用。

83、1-Wire单总线典型通信流程:

84、利用GPIO模拟1-Wire总线注意点:

85、STM32 FSMC接口概述:

FSMC (Flexible Static Memory Controller) :灵活静态存储控制器。

86、STM32 FSMC地址映射:

87、FSMC公用信号:

88、FSMC易错点:

1、无论外接 8 /16 位宽度设备, FSMC_A[0] 永远连接外部设备的地址 A[0]。
2、驱动SRAM时一般使用模式1或者模式 A。
3、模式A支持读写时序分开设置。
4、 FSMC接口对应的GPIO GPIO端口模式设置:GPIO_Init(); //模式设置为 GPIO_Mode_AF_PP

89、模拟数字转换器ADC:

1、ADC模数转换关键步骤:采样(Sampling)、量化(Quantization)和编码(Coding)。
2、

3、

4、

5、

6、

90、模拟数字转换器DAC:

1、

2、DAC引脚:

3、

4、

5、

91、CAN总线概述 :

控制器局域网络的简称,是一种异步半双工串行通信协议,因其优越的组网方式,实时安全的数据传输能力,强大的纠错能力等优点,具有很高的可靠性,广泛应用于汽车电子、航空航天、工业自动化、船舶、医疗设备、工业设备等领域。

92、STM32 bxCAN:

工作模式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/681805.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:介绍:Python经典小游戏合集

介绍:Python经典小游戏合集 作为一门简洁易学、受到广泛喜爱的编程语言,Python已经在各个领域中得到了广泛应用,包括游戏开发。在这篇文章中,我们将为您介绍一些Python编程中的经典小游戏,让您感受到Python的多功能性…

idea乱码的相关问题

idea控制台乱码(即:tomacat等启动时的乱码) 第一步: 控制台tomcat启动信息乱码解决(红色字体) 1 在本地 tomcat 的配置文件中找到 logging.properties 文件设置日志输出的编码为 UTF-8 追加的配置信息为…

【Android复习笔记】Handler机制(一)

从 Android 初学者常见的一个错误开始: 导致这个错误的代码通常长下面这样: new Thread(){@Overridepublic void run() {new Handler(); } }.

chatgpt赋能python:Python编程中常见的问题和解决方案

Python编程中常见的问题和解决方案 Python作为一门高级编程语言,广泛用于数据分析、人工智能、Web开发等领域,然而在实际应用中我们不可避免地会遇到许多问题。在本文中,我们将探讨一些常见的Python编程问题以及解决方案。 1. 编码问题 Py…

碰撞检测算法详述

算法的分类 目录 一、基于空间域的碰撞检测算法分类 1. 基于图像空间的碰撞算法 2.基于几何空间的碰撞检测算法 (1)基于空间剖分算法 (2)裁剪扫掠法 (3)基于距离场的算法 (4)…

ModaHub魔搭社区:向量数据库的工作原理

目录 1. 为什么需要向量数据库 1)CPU 工作原理 2)GPU 工作原理 3)二者的差异 4)总结 5)大模型的工作原理 学习 推理 1. 为什么需要向量数据库 向量数据库这一概念随着黄仁勋的演讲火爆了之后,不少…

如何使用upupw搭建服务器,并映射外网访问

作为计算机行业从业人员,相信很多人都接触并使用过phpstudy等类似环境集成包,着对于upupw就比较好理解了。UPUPW绿色服务器平台是Windows下很有特色的一款免费服务器PHP套件,UPUPW PHP套件简化了PHP环境搭建步骤,一个压缩包解压到…

chatgpt赋能python:Python经典游戏:从命令行到桌面

Python经典游戏:从命令行到桌面 Python是一个热门的编程语言,尤其在编写游戏方面表现出色。Python允许开发人员使用简单的语法和丰富的库编写高效率的游戏。在这篇文章中,我们将介绍Python的一些经典游戏,包括简单的命令行游戏和…

GithubAction的使用-简单易懂

一、Github Action简介 github Action (工作流),简单理解就是自动化部署、测试。也就是之前人工手动部署变为现在由机器(服务器)自动部署、测试了。 二、对github Action(工作流)的使用 首先…

〖编程初学者的自我修养 - 满分面试篇①〗- 面试之前需要做的「长期准备工作」

简介:应 850 小伙伴要求, 无论你是迷茫的在校生还是已经就业的老司机,该专栏都值得你订阅,它会让你成就更好的自己!说明:该文属于 编程初学者的自我修养 专栏,购买任意白宝书体系化专栏可加入易…

SpringBoot 解决跨站脚本漏洞(XSS)问题

一、问题背景 使用 SpringBoot 的项目出现了跨站脚本漏洞&#xff08;XSS&#xff09;问题。 二、解决方案 步骤如下&#xff1a; 1、添加maven依赖 在 pom.xml 文件中&#xff0c;增加如下依赖&#xff1a; <dependency><groupId>org.apache.tomcat</group…

莫兰指数P值,Z值分析

仔细看完下面两个链接绝对可以明白。写的非常清晰。 白话空间统计之四&#xff1a;P值和Z得分&#xff08;中&#xff09; 白话空间统计之四&#xff1a;P值和Z得分&#xff08;下&#xff09; 个人理解&#xff1a;P值决定了数据有没有显著性&#xff0c;数据能不能用的问题…

什么是 CI/CD ?

说在开头 CI、CD 其实是三个概念&#xff0c;包含了一个 CI 和两个 CD&#xff0c;CI全称 Continuous Integration&#xff0c;表示持续集成&#xff0c;CD包含 Continuous Delivery和 Continuous Deployment&#xff0c;分别是持续交付和持续部署。这三个概念之间是有前后依赖…

chatgpt赋能python:Python如何等分区间

Python如何等分区间 Python是一种高级编程语言&#xff0c;经常用于数据分析和科学计算。在数据分析中&#xff0c;等分数据区间是常见的操作。本文将介绍Python如何等分区间&#xff0c;并提供一些实用的代码示例。 什么是等分区间 等分数据区间是将数据划分为几个大小相等…

网络编程的无冕之王-Netty入门和核心组件介绍

最近我在研究Netty&#xff0c;之前只是经常听说&#xff0c;并没有实际做过研究&#xff0c;为什么突然要好好研究一下它&#xff0c;主要是因为前段时间&#xff0c;我在看RocketMQ底层原理的时候发现它的底层的网络通信都是基于Netty&#xff0c;然后网上一查&#xff0c;果…

【软件设计师暴击考点】网络安全等杂项高频考点暴击系列

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;软件…

读发布!设计与部署稳定的分布式系统(第2版)笔记11_无限长的结果集

1. 无限长的结果集是导致响应缓慢的常见原因 1.1. 当违反稳态模式时&#xff0c;就可能产生无限长的结果集 1.2. 当调用方允许另一个系统支配调用时&#xff0c;就会出现一个无限长的结果集 2. 数据库突然返回500万行&#xff0c;而不是通常的100多行时会发生什么&#xff1…

密码找回流程绕过测试-业务安全测试实操(20)

密码找回流程绕过测试 测试原理和方法 很多网站的密码找回功能一般有以下几个步骤 (1) 用户输入找回密码的账号: (2) 校验凭证:向用户发送短信验证码或者找回密码链接,用户回填验证码或单击链接进入密码重置页面,以此方式证明当前操作用户是账号主人;(3) 校验成功进入重置密…

重构项目的十大注意事项

文章目录 1. 确认重构的目的和范围2. 建立好重构计划3. 检查重构前的代码4. 测试重构后的代码5. 避免过度重构6. 保持团队成员沟通7. 使用重构工具8. 使用版本控制系统9. 持续监控重构进度10. 不断改进技能 1. 确认重构的目的和范围 在开始重构之前&#xff0c;需要明确重构的…

Spring(五)基于注解的自动装配

注解&#xff1a;和XML配置文件一样&#xff0c;注解本身并不能执行&#xff0c;注解本身仅仅只是做一个标记&#xff0c;具体的功能是框架检测到注解标记的位置&#xff0c;然后针对这个位置按照注解标记的功能来执行具体操作。 本质上&#xff1a;所以一切的操作都是java代码…