Untitled.png

名词解释

  1. Sco:片上芯片;System on Chip
  2. RTOS:嵌入式实时操作系统;Real-Time Operating System
  3. MCU:嵌入式微控制器/单片机;Microcontroller Unit
  4. MIPS:无内部互锁流水级的微处理器;Microprocessor without Interlocked Pipeline Stages
  5. RAM:随机存取存储器;Random Access Memory
  6. SRAM;静态随机存储器;Static Random Access Memory
  7. DRAM:动态随机存取存储器;Dynamic Random Access Memory
  8. SDRAM:同步动态随机存储器;Synchronous Dynamic Random Access Memory
  9. ROM:只读存储器;Read-Only Memory
  10. EEPROM:电可擦除可编程只读存储器;Electrically Erasable Programmable Read-Only Memory
  11. Flash:闪存存储器;Flash Memory
  12. GPIO:通用输入输出接口;General Purpose Input/Output
  13. USART:通用同步异步收发器;universal asynchronous receiver and transmitter
  14. Ethernet:以太网接口;
  15. I2C:集成电路总线接口;Inter-Integrated Circuit
  16. SPI:串行外围设备接口;Serial Peripheral Interface
  17. NVIC:嵌套向量中断控制器;Nested Vectored Interrupt Controller
  18. MPU:有内存保护单元/存储器保护单元;Memory Protection Unit
  19. MMU:有内存管理单元;Memory Management Unit
  20. WIC:唤醒中断控制器;Wake-up Interrupt Controller
  21. TCM:紧耦合接口;Tightly Coupled Memory
  22. RISC:精简指令集;Reduced Instruction Set Computing
  23. CISC:复杂指令集;Complex Instruction Set Computing
  24. MSP:主堆栈指针;(永远使堆栈末尾地址加1);Main Stack Pointer
  25. PSP:进程堆栈指针;Process Stack Pointer
  26. xPSR:程序状态寄存器(三合一);Program Status Register
  27. ISR:中断服务程序;Interrupt Service Routine
  28. DMA:直接内存读取;Direct Memory Access
  29. PLL:锁相环;Phase-Locked Loop
  30. PWM:脉冲宽度调制;Pulse Width Modulation
  31. ADC :模数转换器;
  32. DAC:数模转换器;

第一章 嵌入式系统概述(了解关键概念)

基本概念

  • 定义:嵌入式系统就是一个具有特定功能或用途的计算机软硬件集合体,是对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统 。
  • 特点:专用性,低功耗、小体积、高集成度、
  • 应用:手机、智能电气、汽车、自动化设备、通信设备等等;
  • 计算机硬件的5大组成部分:控制器、运算器、存储器、输入输出设备;

系统体系

  1. 硬件架构:;
  2. 软件结构的三个层面:设备驱动层(板级支持包、驱动程序)、OS层、应用层(应用程序、硬件抽象层);

硬件系统

  1. 嵌入式处理器分类:嵌入式微处理器、嵌入式微控制器、嵌入式DSP、嵌入式SoC;
  2. 存储系统;
  3. IO接口;

操作系统

  • 非实时操作系统:Linux、ios、Android;
  • 实时操作系统:Vxworks、RTX、FreeRTOS;

课后习题

  1. I/O与CPU信息传送控制方式:查询、中断、DMA控制方式
  2. 嵌入式系统与计算机系统有什么区别?通用计算机使用高性能处理器,追求更高的存储容量,嵌入式系统要求智能化控制。

第2章 ARM Cortex-M体系结构

概述

A     尖端的基于虚拟内存的操作系统和用户应用;

R     针对实时系统;

M    针对微控制器;

内核基础

Untitled.png

Untitled.png

Untitled.png

  1. 寄存器组:

    低组寄存器:指定寄存器的所有指令;

    高组寄存器:指定寄存器的32位指令,16位不行;

    Untitled.png

  2. 堆栈

    MSP:默认调用;

    PSP:用户应用程序代码使用;

    Untitled.png

  3. LR(链接寄存器):用于接收来自PC的返回地址;

  4. PC(程序记数寄存器):指向下一条待执行的地址;

  5. 堆栈操作:

    ① 满递减堆栈。

     指向最后压入堆栈的数据,且存储地址减小;
    

    ② 满递增堆栈。

    ③ 空递增堆栈。

    ④ 空递减堆栈。

     指向压入堆栈数据的下一个地址,且存储地址增大;
    
  6. 入栈出栈(eg:交换R1和R2)

    push(R1):将数据放入R1;

    pop(R1):将数据从R1取出;

  7. 特殊功能寄存器

    程序中断寄存器(xPSR);

    中断屏蔽寄存器;

    控制寄存器;

存储器系统

  1. 主要特性

Untitled.png

  1. 数据类型

    字:32bit

    半字:16bit

    字节:8bit

  2. 存储形式

    0x12345678———-左边为高位

    大端存储:高位放低地址

    小端存储:高位放高地址

  3. 位带区

    每个比特扩大为32位的字;

    公式:bit_word_addr = bit_band_base + (byte_offset x 32) + bit_number × 4

    eg):0x20000300:0x22006008(= 0x22000000 + (0x300*_32) + (2*_4))

异常和中断

  1. 优先级

    抢占优先级:

    响应优先级:

  2. 抢占:

    Untitled.png

  3. 末尾连锁

    Untitled.png

课后习题

  1. 试说明Corte-M3/M4处理器两种模式和两种特权的使用。

    两种模式:线程模式和处理器模式。

    这两种模式可以区别普通应用程序的代码和异常服务例程的代码(包括中断服务例程的代码)。

    两种特权:特权级和用户级。

    提供一种存储器访问的保护机制。

  2. Corte-M3/M4处理器中断向量处存放的是对应中断的什么信息?

    中断向量处存放的是中断服务程序的入口地址

  3. Corte-M3/M4处理器复位后执行的第一项操作是什么?第二项操作是什么?
    第一项操作:从0x00000000地址处将存储的栈顶指针(一个地址)取出来放在MSP中。
    第二项操作:从0x00000004地址处将存储的复位异常应用程序入口地址取出来放在PC中。处理器中的程序从此处开始执行。

  4. 进行STM32F4系列微控制器程序开发一般需要准备开发板集成开发环境(IDE)仿真器

第3章 STM32F429微控制器概述

简介:

Untitled.png

Untitled.png

时钟系统(考):

Untitled.png

电源系统:

三个部分:备份电路、ADC电路、调压器主供电电路;

复位系统:

三种类型:

系统复位:

NRST:外部复位;

Untitled.png

电源复位:

备份域复位:

备份域控制寄存器(RCC_BDCR)

课后练习

  1. STM32F29IGT6微控制器的引脚有哪些类型?

    引脚类型主要有电源引脚、晶振I/O引脚、下载I/O引脚、BOOT I/O引脚、复位I/O引脚、GPIO引脚等。

  2. 清零:与 置位:或 取反:异或

第5章 GPIO结构及应用

结构原理

9个端口和16个引脚;

  1. 掌握 考(例如元器件什么用)

Untitled.png

  1. GPIO 功能描述

    • 输入浮空上电默认模式

      Untitled.png

    • 输入上拉

      Untitled.png

    • 输入下拉

      Untitled.png

    • 模拟功能

      注意:在模拟配置中,I/O 引脚不能为 5 V 容忍。禁止上拉和下拉;

      Untitled.png

    • 具有上拉或下拉功能的开漏输出

      推挽和开漏的区别:

      推挽:0使N-MOS通,使得引脚与地导通,输出低电平;

             1使P-MOS通,使得引脚与Vdd导通,输出高电平;
      
      
            好处:既能提高电路的负载,,又能提高开关的速度;
      

      开漏(默认输出低电平,输出高电平必须接上拉电阻):

        P-MOS始终截止;
      
      
        0使N-MOS通,1使N-MOS截止,变成高阻态;
      

      Untitled.png

    • 具有上拉或下拉功能的推挽输出

      Untitled.png

    • 具有上拉或下拉功能的复用功能推挽

      Untitled.png

    • 具有上拉或下拉功能的复用功能开漏

      Untitled.png

    GPIO相关寄存器

    1. 每个通用 I/O 端口包括以下寄存器 :
    • 4 个 32 位配置寄存器(GPIOx_MODER、GPIOx_OTYPER、GPIOx_OSPEEDR 和 GPIOx_PUPDR)

      端口模式寄存器:

      Untitled.png

      端口输出寄存器:

      Untitled.png

      端口输出速度寄存器:

      Untitled.png

      上拉下拉寄存器:

      Untitled.png

    • 2 个 32 位数据寄存器(GPIOx_IDR 和 GPIOx_ODR);

      端口输入数据寄存器:

      Untitled.png

      端口输出数据寄存器:

      Untitled.png

    • 1 个 32 位置位/复位寄存器 (GPIOx_BSRR);

      端口置位复位寄存器:

      Untitled.png

    • 1 个 32 位锁定寄存器 (GPIOx_LCKR) ;

    • 2 个 32 位复用功能选择寄存器(GPIOx_AFRH 和 GPIOx_AFRL);

      分为高位低位;

    GPIO典型应用步骤及常用库函数

初始化函数

创建结构体;

实例化;

使能GPIO时钟;

配置引脚;

4个:

模式


推挽/开漏


速度


上拉/下拉/悬空

初始化

读取输入/输出电平函数

实际操作IDR和ODR;

设置输出电平函数

实际操作BSSR寄存器

### **GPIO应用实例**

1. GPIO输出实验:**控制LED灯,以1s为周期进行闪烁。**
    - 可能画电路图

        ![Untitled.png](/images/3469683ee6b724d763c40c6262f4962b.png)

    - Code:

        ![Untitled.png](/images/9dfd6223baa52d30ef71c7a3c2bb7d4f.png)

2. GPIO输入实验:
    - 电路图

    ![Untitled.png](/images/58633b3b8a60f43f0e1e80f581675b35.png)

    - 可能画流程图

    ![Untitled.png](/images/9ecb6fa4c5b9b3c91fd0d42bf9bb743a.png)

    - Code

        ![Untitled.png](/images/7253d13fcb681fdcb71e8c9ecece036f.png)


        ![Untitled.png](/images/3b79c429d87870d2790fadd9cec3c98d.png)

3. **GPIO复用应用实例**
    - 在最后,需要配置GPIOx_AFRL或者GPIOx_AFRH寄存器,将IO连接到所需的AFx。
    - code

        ![Untitled.png](/images/12a68bd9f4b392f5dd7c283e894fd056.png)

4. **矩阵按键应用**
    - 逐行扫描:逐行输出低电平,当检测到不是低电平时,根据检测到的列号综合判断;
    - 行列扫描:首先全部行线输出低电平,判断出列号,然后所有列线输出低电平,判断出行号,综合得出按键所在位置;
    - 流程图

        ![Untitled.png](/images/bf38acb4f907277aa2f714cb0b45de83.png)

课后练习

  1. 當要同時初始化某個GPIO的1號、2號引腳,賦給GPIO_InitTypeDef結構體類型成員GPIO_Pin的值是 GPIO_Pin_1 | GPIO_Pin_2

第6章 NVIC

简介

  1. NVIC中断管理方法:

    应用中断和复位控制寄存器SCB_AIRCR(Application interrupt and reset control register

    Untitled.png

    抢占式优先级>响应优先级>中断表中的排位顺序

  2. 常用库函数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    typedef struct
    {
    uint8_t NVIC_IRQChannel; //设置中断通道
    uint8_t NVIC_IRQChannelPreemptionPriority;//设置抢占优先级
    uint8_t NVIC_IRQChannelSubPriority; //设置响应优先级
    FunctionalState NVIC_IRQChannelCmd; //使能/禁止
    } NVIC_InitTypeDef;

    NVIC_InitTypeDef NVIC_InitStructure;
    NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;// 37 串口1中断
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;// 抢占优先级为1
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;//响应优先级为2
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//IRQ通道使能
    NVIC_Init(&NVIC_InitStructure); //根据上面指定的参数初始化NVIC寄存器

    Untitled.png

    第7章 外部中断/事件控制器(EXTI)

    简介

    1. 中断请求

      Untitled.png

    2. 触发事件

      Untitled.png

    3. 外部中断服务

      16个中中断线只有7个中断服务,其中5-9共用一个,10-15共用一个;

    • 触发方式:上升沿/下降沿/双沿触发

    常用库函数

    1. 初始化

      Untitled.png

      Untitled.png

    应用实例

    1. 按键中断

      Untitled.png

      Untitled.png

      Untitled.png

      Untitled.png

      Untitled.png

课后习题

  1. 外部中断的中断请求信号可以是控制器外部产生由GPIO引脚引入的,也可以是由控制器内部一些片上外设产生的。这一说法是否正确?_正确___。

  2. 外部中断信号输入的触发信号形式可以是__上升沿触发_、_下降沿触发_、_边沿触发_、。

  3. 每个外部中断在中断向量表中,是否都独立占用一个位置?不是

  4. 应用外部中断,需要先使能GPIO端口的时钟和___ SYSCFG___时钟。

  5. 试述初始化外部中断的步骤。
    (1)使能用到GPIO时钟和SYSCFG时钟。
    (2)初始化相应GPIO的引脚为输入。
    (3)设置GPIO引脚与EXTI线的映射关系。
    (4)初始化工作类型、设置触发条件、使能等等。
    (5)配置中断分组(NVIC),并初始化相应中断通道的优先级及使能/禁止。
    (6)编写中断服务函数。
    (7)编写中断服务程序处理内容。

    课后习题中有详细参考

第9章 定时器系统

简介

  1. 用途:基本定时功能、生成输出波形(输出比较、PWM和带死区插入的互补PWM)和测量输入信号的脉冲宽度(输入捕抓)等;
  2. 基本结构:

Untitled.png

  1. 时钟源:

    Untitled.png

    • 内部时钟源模式

      从模式控制寄存器(TIMx_SMCR)的位段SMS = 000,例如,在HCLK=180MHz,PCLK2=90MHz(APB2总线时钟预分频系数=2)的情况下,定时器TIM1的内部时钟源=2×PCLK2=180MHz。

    • 外部时钟源模式1

      设置SMS = 111;对TS进行设置;

    • 外部时钟源模式2

      以ETR引脚输入作为时钟源;

    • 编码器模式

基本定时模式

  1. 时基单元

    Untitled.png

    ➀计数器寄存器 (TIMx_CNT)

    ➁预分频器寄存器 (TIMx_PSC)

    ➂自动重载寄存器 (TIMx_ARR):存储溢出值

    ➃重复计数器寄存器 (TIMx_RCR)

  2. 计数模式

    对TIMx_CNT进行计数,通用定时器可以向上计数、向下计数、向上向下双向计数模式。

    ARPE = 0(无缓冲),反之;

    递增计数模式;

    递减计数模式;

    中央对齐模式;

捕抓/比较功能

  1. 功能:输入:测频率,PWM周期,占空比;
    • PWM输入:

      当连续两次捕抓同一输出信号的连续两个边沿跳变,两次得到的计数寄存器值分别为C1和C2(假设C1和C2计数期间没有溢出事件),那么这一输入信号的周期:

      (C2-C1)/CK_CNT)/输入捕抓通道预分频系数。

    • PWM输出:

      **”死区”**(Dead Time)是指在输出比较事件(例如PWM输出)之间引入的一段时间延迟。这段延迟时间允许在两个输出切换之间确保输出电路稳定的时间,以避免可能的短路或过渡电流

      TIMx_CCRx:捕获/比较寄存器

      计算各个寄存器的值

      边沿比较模式;

      中心对齐模式;

      Untitled.png

      中心对齐模式,CRR不变,ARR = ARR/2;

常用库函数

Untitled.png

应用实例

Untitled.png

Untitled.png

Untitled.png

Untitled.png

Untitled.png

课后习题

  1. 中心对齐计数模式是先以递增计数模式,从0计数到__ ARR -1___,然后产生一次向上溢出,再在从___ ARR _计数到____1,然后产生一次向下溢出。

  2. 当使能了比较输出功能,输出PWM波,在边沿比较模式下,当TIM_x__CNT计数值在_0~ CCR-1 寄存器___范围时,输出有效电平;在  CCR~ARR   范围时,输出反向电平。

  3. 定时器TIM2挂载在APB1总线上,假设PCLK1=45MHz,选择内部时钟作为计数时钟源(默认情况下这一时钟源频率=2×PCLK1),TIM2_PSC=8,TIM2_ARR=49,则计数溢出一次,时间为多长?怎么计算?
    (TIM2_PSC+1)*(TIM2_ARR +1)/ 90000000 = 9 * 50 / 90000000 = 5us

  4. 使用内部时钟时,怎么确定各定时器的时钟基准频率?
    答:
    除非APB的分频系数是1,否则通用定时器的时钟等于APB时钟的2倍。
    默认调用SystemInit函数情况下:
    SYSCLK=180M
    AHB时钟=180M
    APB1时钟=45M,APB2时钟=90M
    APB分频系数分别是4和2
    所以,定时器时钟是相应挂载总线时钟的2倍。

    Untitled.png

第14章 I2C

简介

  • 支持多个通信主机和多个通信从机;

SDA - 数据信号线(serial DAta)

SCL - 时钟信号线(serial CLock)

  1. 物理层

Untitled.png

  • IIC是半双工:允许双边的通信,但是同一时间只允许发送或者接收;
  • IIC可以在通讯过程中,改变主机。通过使用仲裁机制判断真正的主机;
  1. 协议层

    Untitled.png

    总线空闲状态 :
      SDA :高电平
      SCL : 高电平

    Untitled.png

    Untitled.png

    发:

    Untitled.png

    收:

    Untitled.png

软件模拟IIC

  1. 开始信号

    Untitled.png

  2. 结束信号

    Untitled.png

模拟I2C总线协议读写AT24CXX系列EEPROM实验

  1. EEPROM实验

Untitled.png

若A0不用,悬空使用NC替换A0表示;

Untitled.png

课后习题

  1. 描述I2C通信线路上电路接口形式。
    I2C器件的SDA引脚和SCL引脚是开漏电路形式,因此,SDA和SCL总线都需要连接上拉电阻,当总线空闲时,两条总线均为电平。
    连接到总线上的任意器件输出低电平都会将总线信号拉低,即各器件的SDA和SCL信号线在总线上都是“线与”的关系。

第15章 SPI控制器

简介

支持单主多从;

来自主机的片选信号用于选择从机,低电平,拉高时从机与SPI总线断开连接。

Untitled.png

  1. SPI传输

Untitled.png

在时钟SCLK的控制下实现数据的环形传输。

要开始SPI通信,主机必须发送时钟信号,并通过使能NSS信号选择从机。

  1. 时钟极性和相位

    CPOL=0,时钟空闲时低电平,SCLK有效时高电平;

    CPOL=1,时钟空闲时高电平,SCLK有效时低电平。

    CPHA=0,数据采样在第1个边沿;

    CPHA=1,数据采样在第2个边沿。

    Untitled.png

SPI控制器

  1. 主模式的全双工收发过程

    Untitled.png

  2. 主要特性

    Untitled.png

    全双工****(Full Duplex)是一种通信模式,其中数据可以在通信设备之间同时双向传输,即设备可以同时发送和接收数据。这与半双工(Half Duplex)和单工(Simplex)通信模式相对。

  3. 状态标志

    TXE=1:发送缓冲区位为空,对SPI_DR执行写操作时将清零TXE标志;

    RXNE=1:接收缓冲区存在有效的已接受数据,读取SPI_DR时将清零RXNE标志;

    BUSY =1 ,表示 SPI 正忙于通信,用于指示SPI 通信的状态。

常用库函数

  1. SPI初始化函数

    Untitled.png

  2. Untitled.png

课后习题

实验

触摸式按键实验

  1. 输入检测方法:
    • 触摸式按键: 通常通过检测电容变化或电阻变化来确定触摸的位置。触摸事件通常会触发中断或通过轮询进行检测。
    • 普通按键: 通过检测GPIO引脚的电平变化(上升沿或下降沿)来确定按键的状态。可以使用中断或轮询方法。
  2. 触摸式按键支持连续触发(可以一直按下)

Keilv5常见错误

Csdn

embed