STM32中断与DMA通信编程

本文详细介绍了STM32中断与DMA通信的基本概念和编程方法,通过实例展示了如何利用中断模式控制LED灯亮灭,串口中断发送数据,以及串口DMA方式连续发送数据。实验涵盖了中断的优先级、STM32中断系统和DMA控制器的特性,提供了从新建工程到烧录的完整步骤,加深了对中断和DMA技术的理解。
摘要由CSDN通过智能技术生成

实验要求:学习stm32中断、DMA通信原理和编程方法。使用stm32tubemx和HAL库分别完成以下编程练习:(1)用stm32F103核心板的GPIOA端一管脚接一个LED,GPIOB端口一引脚接一个开关(用杜邦线模拟代替)。采用中断模式编程,当开关接高电平时,LED亮灯;接低电平时,LED灭灯。(2) 采用串口中断方式重做上周的串口通信作业。(3) STM32采用串口DMA方式,用115200bps或更高速率向上位机连续发送数据。

一、中断相关概念

1、数据传输方式

处理器和外部设备的数据方式总共分为4种,分别是:

  • 无条件传输:处理器不必了解内部设备状态,直接进行数据传输,用于一些简单设备。
  • 查询方式:CPU通过程序主动读取状态寄存器,了解接口情况,完成相应的数据操作。查询操作需要以较少的时钟周期间隔重复,因此CPU效率较低。
  • 中断方式:当CPU进行主程序操作时,外设的数据已存入端口的数据输 入寄存器,或端口的数据输出寄存器已空,此时由外设通过接口电路向CPU发出中断请求信号。CPU在满足一定条件下,暂停执行当前正在执行的主程序,转入 执行相应能够进行输入/输出操作的子程序,待输入/输出操作执行完毕之后,CPU再返回并继续执行原来被中断的主程序。这样,CPU就避免了把大量时间耗 费在等待、查询外设状态的操作上,使其工作效率得以大大提高。
  • 直接存储器访问(DMA):处理器内部建立片内外设和内存之间的数据传输通道,传输过程不需要处理器参与。

2、中断概念

中断全过程流程图和执行过程示意图如下:
在这里插入图片描述
在这里插入图片描述

3、中断的作用

  • 速度匹配:可以解决快速的CPU与慢速的外部设备之间传送数据的矛盾。
  • 分时操作:CPU可以分时为多个外部设备服务,提高计算机的利用率。
  • 实时响应:CPU能够及时处理应用系统的随机事件,增强系统的实时性。
  • 可靠性高:CPU可以处理设备故障及掉电等突发事件,提高系统可靠性。

4、中断优先级

处理器根据不同中断的重要程序设置不同的优先等级。不同优先级中断的处理原则是:高级中断可以打断低级中断;低级中断不能打断高级中断。这就形成了一种中断嵌套。
在这里插入图片描述

5、STM32中断系统

(1) NVIC
Cortex-M内核的组件,嵌套向量中断控制器,管理所有的中断和异常,为中断源分配中断通道
(2) 中断通道
微控制器片内集成了很多外设,对于单个外设而言,它通常具备若干个可以引起中断的中断源,而该外设的所有中断源只能通过指定的中断通道向内核申请中断。
STM32支持84个中断(16个内部,68个外部);16级可编程的中断优先级设置。
(3) 优先级分组
HAL库初始化函数HAL_Init将优先级设置为4组,从0-15,共16级占优先级。编号越小,优先级越高。
在这里插入图片描述
(4) 外部中断控制器

  • 管理23个外部中断线(EXTI Line)
  • 0~15号外部中断用于由GPIO引脚触发的外部中断
  • 16~22号外部中断用于RTC闹钟事件、以太网唤醒事件和USB唤醒事件
  • 当对应GPIO引脚与外部中断线连接后,GPIO引脚才具备中断的功能,可以设置外部中断的触发方式。
    在这里插入图片描述

(5) HAL库的中断处理流程
总体流程如下图
在这里插入图片描述

6、串口中断过程

在这里插入图片描述

二、中断模式控制LED灯亮灭

1、新建工程与相关配置

打开STM32cubeMX,选择New Project新建一个工程
在这里插入图片描述
在右上角根据自己的芯片信号选

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值