当前位置: 首页 > news >正文

STM32F103_LL库+寄存器学习笔记11 - 串口收发的中断优先级梳理

导言


推荐的STM32 USART+DMA 中断优先级设置(完整方案):
以你的STM32F103 USART1 + DMA实例为例:
在这里插入图片描述

推荐中断优先级设置中断优先级
USART1空闲中断(接收相关)优先级0
DMA1通道5接收中断(半满/满传输)优先级0
DMA1通道4发送中断(发送完成)优先级2
NVIC_SetPriority(USART1_IRQn, 0);         // USART空闲中断最高
NVIC_SetPriority(DMA1_Channel5_IRQn, 0);  // DMA接收通道跟空闲中断一样高
NVIC_SetPriority(DMA1_Channel4_IRQn, 2);  // DMA发送通道最低

接收端的所有中断(USART空闲+DMA接收)优先级均高于发送端(DMA发送)。另外,如果有其他实时性要求更高的外设,需要把串口通讯的中断优先级调低的话,也要保证规则:USART空闲中断 = DMA接收通道中断 > DMA发送通道中断。

一、先明确“优先级”高低的含义


中断优先级高意味着当两个中断同时发生时,优先级高的中断会优先被CPU响应和处理。

二、为什么接收中断的优先级要比发送的中断优先级要高?


  1. 接收数据存在丢失风险
    • 数据接收缓冲区大小有限,若Rx数据未及时取出,容易造成后续数据覆盖或丢失。因此,接收中断必须尽快响应并处理。 比如,若外部设备持续发送数据,而你未及时处理接收中断,数据将不断积压,可能导致数据缓冲区溢出。反之发送中断慢一点响应,一般也只是稍微影响数据发送速度,并不会导致致命问题。
  2. 发送中断的延迟容忍度较高
    • 发送数据通常由程序控制,主动权在STM32手中。稍微延迟发送(即发送中断的响应慢一些)不会对系统造成严重影响,只是数据发送节奏稍慢而已,不会引发数据错位、丢失。发送数据被短暂延迟,只会导致数据发送稍慢,不影响数据完整性。
  3. 工业级通信协议与实践经验
    • 在实际的工业设备中,接收数据通常比发送数据具有更高的实时性要求。接收端数据若未及时处理,容易影响整个系统通信状态。而发送端稍有延迟影响并不严重。
http://www.dtcms.com/a/97109.html

相关文章:

  • 菜鸡前端计算机强基计划之CS50 第七课 python 入门—— Python 中文件操作专题学习
  • ExpTimerApcRoutine函数分析之作用是ActiveTimerListHead里面移除定时器_etimer
  • dockerfile构建镜像方式
  • 前端解决方案:实现网页截图并导出PDF功能
  • 深入解析 JSON-RPC:从基础到高级应用(附调用示例)
  • 第十二章——位运算
  • 通用人工智能(AGI)的发展路径(人工智能通识)
  • 任意文件读取漏洞
  • knowledge-vscode中配置java环境(JDK-8下载,配置 Maven 并创建项目)
  • 图像(numpy)与Base64互转
  • vue create创建 Vue-router 工程
  • AI赋能SEO关键词智能优化
  • VMware虚拟机 ubuntu22.04无法与共享粘贴板和拖拽文件的解决方案
  • 细说AGV叉车的导航,如何精准定位并选取最优路径?
  • NX二次开发刻字功能——预览功能
  • 盈亏平衡分析
  • SWEET-RL:基于训练时信息的多轮LLM代理强化学习框架
  • 计算机二级WPS Office第十二套WPS演示
  • LIMS系统如何构筑染料质检的防线 质检LIMS系统在染料生产企业的应用
  • 在学校图书馆知识库中进行论文检索报告生成
  • 【Kafka】深入探讨 Kafka 如何保证一致性
  • 《白帽子讲 Web 安全》之服务端请求伪造(SSRF)深度剖析:从攻击到防御
  • 【云成本优化案例】K8s计费探针让跨境电商企业节省30%云预算
  • 视频编码器的抉择:x264、x265、libaom、vvenc 对比测试实验
  • 用Python插入Excel表格到Word文档
  • 【linux】常用命令
  • 一次与chatgpt关于VO的深入讨论。
  • 3. 无重复字符的最长子串
  • DeepSeek-V3新版本DeepSeek-V3-0324
  • Android 中隐藏标题栏和状态栏的方法