中断模式串口
串口数据的发送接收可以藉由串口发送中断、接收中断实现。串口发送中断、接收中断可以同时开启。UART发送中断可以分为两种UART发送缓冲区为空中断数据从UART引脚发送出去中断。串口中断模式参见FM33L023D串口中断例程该例程在初始化阶段开启UART0发送、接收中断串口0收到数据后会进入串口中断服务处理程序。串口发送中断、接收中断共用一个中断服务处理程序发送中断触发需要修改中断服务例程。串口中断操作相对于轮询方式操作更复杂。开发者需要先配置串口功能再开启总中断开启UART发送中断、接收中断。中断使能串口中断例程先设置中断触发模式串口发送中断选择BUFFER空且移位寄存器空相对于串口发送缓冲区为空这种模式触发时机晚以前用STM32系列芯片好像没有注意到这个细节。针对这个问题官方论坛有给出明确解释。请问FM33LC0xx系列LPUART发送中断TXBE和TXSE的区别是什么 - FM33LC0xx系列 - 低功耗嵌入式软件开发者论坛 - Powered by Discuz! Archiverhttps://www.fmdevelopers.com.cn/archiver/?tid-1146.htmldeepseek针对这两种模式给出了使用场景我就直接搬运了。追求最高发送吞吐量使用TXE/THRE如果需要连续、大量地发送数据且对CPU效率要求高通常建议使用仅“发送缓冲区空”中断。因为可以在上一个字节还在“路上”移位发送时CPU就提前把下一个字节填入缓冲区充分利用硬件流水线实现最高效的连续发送中间几乎没有空闲间隔。需要精确控制RS485收发切换或流控使用TC如果涉及RS485通信需要在发送完成后立即释放总线将RE/DE引脚拉低或者在半双工模式下切换方向必须使用“BUFFER空且移位寄存器空”中断即发送完成中断。只有在TC标志置位时才能确保总线上所有数据已发送完毕此时切换收发状态才安全否则会造成数据丢失或总线冲突。接收中断选择接收缓冲区满而不是数据接收完成产生中断。接收缓冲区即RXREG寄存器有效长度1Byte接收1Byte触发一次中断这是最常见的模式。数据接收完成更像是一帧接收完成触发一次中断。前者更常见后者估计还要配置数据帧格式帧头、帧尾、校验和等暂时没看到明确的解释。接着通过FL_NVIC_Init函数设置中断优先级底层实际调用NVIC库函数。接着就是配置UARTIE寄存器使能发送中断、接收中断。FL_UART_SetTxInterruptSelect(UART0, FL_UART_INTSEL_TXBE_TXSE); //发生中断选择BUFFER空且移位寄存器空 FL_UART_SetRxInterruptSelect(UART0, FL_UART_INTSEL_RX_FULL); //接收Buffer满中断 InterruptConfigStruct.preemptPriority 0x02; FL_NVIC_Init(InterruptConfigStruct, UART0_IRQn); FL_UART_ClearFlag_TXIF(UART0); FL_UART_ClearFlag_RXIF(UART0); FL_UART_EnableIT_TXIE(UART0); FL_UART_EnableIT_RXIE(UART0); /** * brief Configure NVIC for specified Interrupt. * param configStruct NVIC configuration. * param irq Interrupt number. * retval None */ void FL_NVIC_Init(FL_NVIC_ConfigTypeDef *configStruct, IRQn_Type irq) { /* Check parameter */ if(configStruct-preemptPriority 3) { configStruct-preemptPriority 3; } NVIC_DisableIRQ(irq); NVIC_ClearPendingIRQ(irq); NVIC_SetPriority(irq, configStruct-preemptPriority); NVIC_EnableIRQ(irq); }中断接收中断接收功能相信使用过串口接收中断的开发人员都有一定的了解。UART0接收到1Byte数据后进入中断接收逻辑。由于串口一直不断的接收到数据程序将不断触发串口接收逻辑。开发者可以将接收到的数据存入数组。然后在主循环中对接收数据进行解析如果符合数据帧格式就执行相应的操作。为了防止数据溢出可以使用环形数组。也就是记录接收数据的开始位置、结束位置数据索引循环处理例如index%arrRecvLen。int indexTx 0; //发送索引 int indexRx 0; void UART0_IRQHandler(void) { if(FL_SET FL_UART_IsEnabledIT_TXIE(UART0) FL_SET FL_UART_IsActiveFlag_TXIF(UART0)) { FL_UART_ClearFlag_TXIF(UART0); /*中断发送测试代码 for(indexTx 0;indexTx 9;indexTx) { UART0-TXREG arrSend[i]; } */ } if(FL_SET FL_UART_IsEnabledIT_RXIE(UART0) FL_SET (FL_UART_IsActiveFlag_RXIF(UART0))) { arrRecv[indexRx] (uint8_t)FL_UART_ReadRXBuff(UART0); if(indexRx 10) { } } }中断发送中断发送功能我了解的不多只能给出自己的见解。我为了验证这个功能就在中断使能函数的末尾添加了“UART4-TXREG S”,这样系统初始化执行到末尾便会主动发送S字符接着进入串口发送中断不断向串口发送缓冲区填充数据直至数组内容发送完毕。至此中断发送功能得到验证。但是真正使用的时候还要检查发送缓冲区是否为空不能直接发送。最后再给出中断发送与轮询发送的对比表格。轮询发送for循环中断发送中断驱动for(i0; i13; i) {UART5-TXBUF commSendBuf[i];while(TXE0);}主程序start_index0 0;end_index 13;UART5-TXBUF commSendBuf[0];开启中断使能;中断服务程序自动触发13次if(start_index0 end_index)UART5-TXBUF commSendBuf[start_index0];else关闭中断使能;维度轮询发送中断发送发送循环位置主程序for循环中断服务程序ISR如何检测TXEwhile(TXE0);主动等待由硬件中断自动触发无需显式等待是否有检测代码有显式while有ISR中的if判断索引及硬件自动触发CPU占用高等待期间100%占用低只在ISR中占用几微秒代码结构简单、直观复杂、需要管理状态和中断使能

相关新闻

手把手教你学 Simulink—— 磁场调制电机(FMM)的新型控制策略建模与仿真

手把手教你学 Simulink—— 磁场调制电机(FMM)的新型控制策略建模与仿真

目录 手把手教你学 Simulink —— 磁场调制电机(FMM)的新型控制策略建模与仿真 一、为什么 FMM 是“新型控制”的热土? 1.1 FMM 家族与共同特征 1.2 对控制的挑战与机会 二、系统总体架构(FMM‑aware 控制) 三、关键建模:FMM 等效电路 + 调制传递函数 3.1 核心思…

2026/10/17 23:10:49 阅读更多 →
UE5 UMG菜单闪烁引发GPU崩溃:从渲染异常到TDR超时的诊断与修复

UE5 UMG菜单闪烁引发GPU崩溃:从渲染异常到TDR超时的诊断与修复

1. 项目概述:当UE5的菜单开始“鬼畜”闪烁 最近在项目里遇到一个挺典型的UE5运行时问题,场景不算复杂,但现象很恼人:一个嵌套了多层子菜单的UMG界面,在特定操作下(比如快速来回切换或鼠标悬停)会…

2026/10/15 14:08:37 阅读更多 →
从PWM原理到实战:详解蜂鸣器驱动与音乐播放实现

从PWM原理到实战:详解蜂鸣器驱动与音乐播放实现

1. 项目概述:从“响”到“调”,PWM驱动蜂鸣器的核心价值 搞嵌入式开发的朋友,对蜂鸣器这个“嘀嘀”叫的小玩意儿肯定不陌生。它简单、便宜,是项目里最常用的声学反馈设备。但不知道你有没有遇到过这样的困惑:为什么我的…

2026/10/18 10:14:45 阅读更多 →

最新新闻

五款主流图像生成模型深度对比:从选型到部署实践

五款主流图像生成模型深度对比:从选型到部署实践

画画这件事,前两年大家还停留在“能出图就行”,到了现在,手里没有两三款趁手的图像模型,都不好意思跟人聊创作流程。我最近把FLUX.2、Seedream(即梦)、Z-image、Qwen-Image、GLM-Image这五款模型从文档到实…

2026/10/18 13:48:08 阅读更多 →
OpenCode 国内 AI 自主编程新选择:把 endpoint 改到 TaoToken 的完整配置指南

OpenCode 国内 AI 自主编程新选择:把 endpoint 改到 TaoToken 的完整配置指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 13:48:08 阅读更多 →
TCP三次握手与四次挥手的故障驱动深度解析

TCP三次握手与四次挥手的故障驱动深度解析

1. 项目概述:这不是背题手册,而是一场网络协议的实战推演“舌战面试官-计网篇(一)”——光看标题,你大概率会以为这是份“八股文合集”,是那种把TCP三次握手、HTTP状态码、OSI七层模型挨个罗列再加粗的速记…

2026/10/18 13:48:08 阅读更多 →
OpenRouter 与 CC-Switch 到底有什么区别?一个管“连什么”,一个管“怎么连”,TaoToken 统一 Key 通道又该放在哪一层

OpenRouter 与 CC-Switch 到底有什么区别?一个管“连什么”,一个管“怎么连”,TaoToken 统一 Key 通道又该放在哪一层

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 13:48:08 阅读更多 →
第 01 篇|Aspen Plus 进阶与工程案例:从“会用”到“用对”的能力地图

第 01 篇|Aspen Plus 进阶与工程案例:从“会用”到“用对”的能力地图

第 01 篇|Aspen Plus 进阶与工程案例:从“会用”到“用对”的能力地图版本声明块 软件:aspenONE V15(Aspen Plus)平台:Windows 64 位(官方平台规格 PDF 以 “Operating Systems (64-bit only)”…

2026/10/18 13:48:08 阅读更多 →
生鲜配送商城APP实战复盘:从架构设计到履约链路与避坑指南

生鲜配送商城APP实战复盘:从架构设计到履约链路与避坑指南

1. 项目概述与核心价值先聊个现象:生鲜配送这几年看着热闹,真正做过的人才知道,这个赛道远不是"把菜送到家"这么简单。相比标品电商,生鲜的核心难点在于"鲜"和"快",这两个字考验的不是某…

2026/10/18 13:47:07 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →