STM32中断、DMA通信原理和编程方法实例

STM32中断、DMA通信原理和编程方法实例

文章目录

    • STM32中断、DMA通信原理和编程方法实例
    • STM32中断、DMA通信原理和编程方法实例
  • 1 中断的简介
    • 1.1 概念
      • 1.1.1 中断优先级
      • 1.1.2 外部中断EXIT
    • 1.2 中断的控制
    • 1.3 中断的配置
  • 2 DMA通信原理和编程方法
    • 2.1 串口中断
    • 2.2 DMA 概念
  • 3 实例一
    • 3.1 建立工程文件
    • 3.2 编写代码
    • 3.3 烧录
    • 3.4 测试结果
  • 4 实例二
    • 4.1 建立工程文件
    • 4.2 编写代码
    • 4.3 烧录
    • 4.4 测试结果
  • 5 实例三
    • 5.1 建立工程文件
    • 5.2 编写代码
    • 5.3 烧录
    • 5.4 测试结果
  • 6 实验总结
  • 7 参考文献

STM32中断、DMA通信原理和编程方法实例

1 中断的简介

1.1 概念

中断其实就是当 CPU 执行程序时,由于发生了某种随机的事件(外部或内部),引起 CPU 暂时中断正在运行的程序,转去执行一段特殊的服务程序(中断服务子程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程就称为中断,引发中断地称为中断源
STM32中断、DMA通信原理和编程方法实例_第1张图片

比如:看电视时突然门铃响,那么门铃响就相当于中断源。有些中断还能够被其他高优先级的中断所中断,那么这种情况又叫做中断的嵌套。

中断的意义:可以节省CPU的内存。

中断满足条件:快进快出

1.1.1 中断优先级

  • 多个中断同时提出中断申请时:先比较抢占优先级,抢占优先级高的中断先执行。如果抢占优先级相同,则比较子优先级。
  • 二者都相同时,比较中断编号(中断编号位于芯片头文件中)。编号越小,优先级越高。
    STM32中断、DMA通信原理和编程方法实例_第2张图片

1.1.2 外部中断EXIT

STM32中断、DMA通信原理和编程方法实例_第3张图片
外部中断程序设计思路:
中断初始化,主要是完善三个结构体:

①GPIO_InitTypeDef (功能:IO配置)

②EXTI_InitTypeDef (功能:中断配置)

③NVIC_InitTypeDef (功能:中断优先级配置)

1.2 中断的控制

NVIC 英文全称是 Nested Vectored Interrupt Controller,中文意思就是嵌套向量中断控制器,它属于 M3 内核的一个外设,控制着芯片的中断相关功能。
ST 公司的 STM32F103 芯片内部中断数量就是 NVIC 裁剪后的结果。
在固件库 core_cm3.h 文件内定义了一个 NVIC 结构体,里面定义了相关寄存器,

1 typedef struct

2 {
   

3 __IO uint32_t ISER[8]; /*!< Offset: 0x000 Interrupt Set Enable Register */

4 uint32_t RESERVED0[24];

5 __IO uint32_t ICER[8]; /*!< Offset: 0x080 Interrupt Clear Enable Register */

6 uint32_t RSERVED1[24];

7 __IO uint32_t ISPR[8]; /*!< Offset: 0x100 Interrupt Set Pending Register */

8 uint32_t RESERVED2[24];

9 __IO uint32_t ICPR[8]; /*!< Offset: 0x180 Interrupt Clear Pending Register */

10 uint32_t RESERVED3[24];

11 __IO uint32_t IABR[

你可能感兴趣的:(stm32,单片机,嵌入式硬件)