stm32串口中断收发数据环形缓冲区的设计

2023-05-16

/*******************************************************************************
* Function Name  : USART2_IRQHandler
* Description    : This function handles USART2 global interrupt request.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void USART2_IRQHandler(void)
{    
  BYTE bTByte;
  WORD wTPsn;

  if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //串口2接收中断
  {
    /* Read one byte from the receive data register */
	bTByte = (USART_ReceiveData(USART2));
	wTPsn  =  W_InSerial2;
	if(++wTPsn ==  MAX_SERIAL_LEN2) wTPsn  =  0;//修改指针边界
    if(wTPsn  !=  W_OutSerial2)  //队列没有满的情况下
    {
        B_SerialQueue2[W_InSerial2]  =  bTByte;
        W_InSerial2  =  wTPsn;
    }    
    /* Clear the USART2 Receive interrupt */
    USART_ClearITPendingBit(USART2, USART_IT_RXNE);
  }
	
  if(USART_GetITStatus(USART2,USART_IT_TXE)){  //串口2发送中断
		//此处加入发送串口数据组帧处理
		
		/* Clear the USART2 Receive interrupt */
    USART_ClearITPendingBit(USART2, USART_IT_TXE);
	}
}

判断串口是接收中断,还是发送中断,不能

else if(USART_GetITStatus(USART2,USART_IT_TXE)){  //串口2发送中断

只能
 if(USART_GetITStatus(USART2,USART_IT_TXE)){  //串口2发送中断
因为如果全双工时是同时收发, 这是会不好处理。
stm32串口中断收发数据环形缓冲区的设计,这里采用的是环形队列做缓冲区。
--> stm32系统初始化要初始化哪些内容?
一般是时钟>中断>外设 
不过stm32初始化之后外设基本全关了,用哪个外设需要先开相应外设的时钟






本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

stm32串口中断收发数据环形缓冲区的设计 的相关文章

  • 阿里云服务器ubuntu18.04安装可视化界面

    这里写目录标题 一 远程连接ubuntu二 安装可视化界面三 安装过程中的问题 一 远程连接ubuntu 输入root密码即可 xff08 这个为实例密码 xff09 二 安装可视化界面 依次输入以下shell命令 apt span cla

随机推荐

  • 奇偶检验等N、O、E、M、S 五种串口检验位类型

    一 检验位 在串行通讯所发送数据的最后一位 xff0c 用来粗略的检验数据在传输过程中是否有出错 二 检验位的五种类型 1 N xff08 None 没有 xff09 无校验 不加校验位 xff0c 可以少传输一位数据 2 O xff08
  • Onvif登录海康、大华摄像机(IPC)提示权鉴失败的问题解决

    最近用我们的Onvif设备发现客户端测试 xff0c 发现连接某些摄像机Onvif获取不到设备信息 xff0c 提示401权鉴失败 确认用户名和密码都没错的情况下 xff0c 都还是失败 xff0c 软件提示信息截图如下 xff1a 我们测
  • 反解析Android APK

    重命名APK为zip 并解压到当前文件中 下载dex解析工具dex2jar link https github com pxb1988 dex2jar releases tag v2 2 SNAPSHOT 2021 10 31 解析文件命令
  • 大数加法越界处理

    大数越界处理 当数据很大时 xff0c 求中点的方法 i 43 j 2的结果有可能会超出 int 类型的取值范围 在此情况下 xff0c 我们需要换一种计算中点的写法 i 43 j 有可能超出 int 的取值范围 int m 61 i 43
  • idea使用断言

    测试程序 public class TestAssert public static void main String args String s1 61 null assert s1 61 null 默认assert不起作用 需开启 ve
  • 2018年面试总结 -- 多线程很重要,多总结很重要

    2018年面试总结 先后面试了Android Linux C C 43 43 QT 得到的结论有以一下几条 xff1a 1 多线程作为一个高级话题太重要了 几乎每种开发环境下都会问到 xff0c 无论是Android还是QT xff1b 2
  • 平常使用的小问题【Windows11开启不了热点,开启热点后连不上去】

    故障现象 xff1a xff08 1 xff09 连接设备一直显示obtaining ip address xff08 2 xff09 电脑没有显示连接的设备 解决措施 xff1a xff08 1 xff09 先转到设置 xff08 2 x
  • IOException: No such file or directory 问题解决

    文章目录 问题描述 xff1a 注册权限动态申请权限总结 xff1a 问题描述 xff1a Android开发 xff0c 在访问文件夹创建文件的时候 xff0c 报错IOException No such file or director
  • 2020(春)工程伦理MOOC期末考试答案

    单选题 多选题 判断题
  • Git中Fork使用

    GitLab或者GitHub中的Fork可以理解为一个物理副本 xff0c 用来管理代码的一种手段 在参与开源项目代码贡献时 xff0c 通常不会直接获得源代码仓库的Developer权限 这点和一般公司开发不太一样 xff0c 公司一般都
  • 在OK6410上运行QT程序找不到libQtGui.so.4的解决

    想在OK6410上运行自己经过交叉编译的QT程序 xff0c OK6410上烧写的是光盘所带的Linux系统 xff0c 运行程序时出现以下现象 xff1a qt server error while loading shared libr
  • Docker的安装

    这篇文章原文是我2016年10月份写的 xff0c 当时在研究docker xff0c 上周六不经意翻了出来 xff0c 由于3月换工作 xff0c 新环境比较忙 xff0c 没时间写些东西 xff0c 所以先把之前写的东西放一下 xff0
  • CRAZEPONY飞控学习(一)

    在不久前曾研究过最近最为流行的开源飞控Pixhawk的源代码 xff0c 但是由于在这之前没有接触过操作系统这个概念 xff0c 在不知道代码执行流程的情况下看了几个星期的时间 xff0c 脑子里还是一团乱 xff0c 所以决定还是从裸机开
  • PHP常用的设计模式

    php常用的设计模式 xff1a 1 单例模式 xff08 构造方法私有化 xff0c 对外提供实例化对象的静态调用方法 xff09 class Site span class token punctuation span public s
  • 003.多线程-主线程、守护线程、用户线程的区别

    对于线程的分类 xff0c 我们可以简单划分为 xff1a 主线程 xff08 每个进程只有一个主线程 xff09 子线程 主线程 xff1a main方法 子线程 xff1a 非主线程皆是子线程 子线程中可以简单划分为 xff1a 守护线
  • Ubuntu中在当前目录下打开终端

    在Ubuntu中 xff0c 打开终端可以通过Ctrl 43 Alt 43 T来打开 xff0c 但其打开的是 下的 xff0c 如果进入指定的目录 xff0c 便需要通过cd命令来进行切换 xff0c 故本文提供一个可以通过鼠标右键来在当
  • C语言经典面试题100道(校对详解版)

    题目非本人整理 xff0c 转载于https blog csdn net qq 42613510 article details 81225935 做了校对与详解 xff0c 方便大家参考 最后编程答案自己做的 xff0c 还没写完 xff
  • 浅谈FreeRTOS任务启动与切换流程

    一个轻量级操作系统最核心的地方就在于任务的执行与切换 xff0c 像FreeRTOS和ucOS 在任务启动与切换方面都差不多 xff0c 本文主要从枝干而省去了所有细枝末节让你最快的了解操作系统的任务创建与切换 以正点原子FreeRTOS移
  • 状态机编程思维学习笔记(C语言)

    前言 不摸鱼摆烂的第一天 目录 前言C语言面对对象特性引入函数指针结构体中套用函数指针宏定义中 纯替换 状态机概念状态机实现后文 C语言面对对象特性引入 众所周知 xff0c C 43 43 是由C语言编写而成 xff0c 因此 xff0c
  • stm32串口中断收发数据环形缓冲区的设计

    Function Name USART2 IRQHandler Description This function handles USART2 global interrupt request Input None Output None