STM32中断与DMA通信编程

STM32中断与DMA通信编程

嵌入式第8周作业
学习stm32中断、DMA通信原理和编程方法。使用stm32tubemx和HAL库分别完成以下编程练习:

1. 用stm32F103核心板的GPIOA端一管脚接一个LED,GPIOB端口一引脚接一个开关(用杜邦线模拟代替)。采用中断模式编程,当开关接高电平时,LED亮灯;接低电平时,LED灭灯。
2. 采用串口中断方式重做上周的串口通信作业。
3. STM32采用串口DMA方式,用115200bps或更高速率向上位机连续发送数据。



一、STM32中断

STM32具有十分强大的中断系统,将中断分为了两个类型:内核异常和外部中断。

1.基本概念

处理器中的中断:在处理器中,中断是一个过程,即CPU在正常执行程序的过程中,遇到外部/内部的紧急事件需要处理,暂时中止当前程序的执行,转而去为处理紧急的事件,待处理完毕后再返回被打断的程序处继续往下执行。中断在计算机多任务处理,尤其是即时系统中尤为重要。比如uCOS,FreeRTOS等。

2.抢占优先级

抢占优先级比较霸道,一言不和就插队。抢占优先级高的,能够打断优先级低的任务,等优先级较高的任务执行完毕后,再回来继续执行之前的任务。所以当存在多个抢占优先级不同的任务时,很有可能会产生任务的嵌套。

3. 响应优先级

响应优先级稍微谦逊些,比较有礼貌。响应优先级又被称为次优先级,若两个任务的抢占式优先级一样,那么响应优先级较高的任务则先执行,且在执行的同时不能被下一个响应优先级更高的任务打断,所以我说它比较有有礼貌。

4.中断控制器

NVIC负责除了SYSTICK之外的所有中断的控制

NVIC的主要功能:

  • 中断管理
  • 支持异常及中断向量化处理
  • 支持嵌套中断

5.中断处理过程

进入中断:

  • 处理器自动保存现场到堆栈里
  • {PC, xPSR, R0-R3, R12, LR}
  • 一旦入栈结束,ISR便可开始执行
  • 晚到的中断会重新取ISR地址,但无需再次保存现场

退出中断:

  • 中断前的现场被自动从堆栈中恢复
  • 一旦出栈完成,继续执行被中断打断的指令
  • 出栈的过程也可被打断,使得随时可以响应新的中断,而不再进行
  • 现场保存

6.中断管理

Cortex-M0处理器中,每一个外部中断都可以被使能或者禁止,并且可以被设置为挂起状态或者清除状态。处理器的中断可以电平的形式的,也可以是脉冲形式的,这样中断控制器就可以处理任何中断源。

7.按键中断编程步骤分析

  1. 使能相应的时钟
  2. 配置GPIO管脚为中断功能
  3. 设置中断优先级
  4. 使能相应的中断
  5. 实现中断服务程序

二、DMA原理

1.基本定义

DMA,全称Direct Memory Access,即直接存储器访问。
DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值