stm32 串口读取数据中断

  • USART_IT_RXNE:读取到一个数据产生中断
  • USART_IT_IDLE:读取到一帧数据产生中断

以前串口读取一帧数据的方法:收到数据后重置定时器的值,等到定时器超时的时候就知道一帧数据读取完了,不过今天有了新的方法,我们可以从USART_IT_IDLE来判断是否读取完成了一帧数据。

void USART_Config(void)
{GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;// 打开串口GPIO的时钟DEBUG_USART_GPIO_APBxClkCmd(DEBUG_USART_GPIO_CLK, ENABLE);// 打开串口外设的时钟DEBUG_USART_APBxClkCmd(DEBUG_USART_CLK, ENABLE);// 将USART Tx的GPIO配置为推挽复用模式GPIO_InitStructure.GPIO_Pin = DEBUG_USART_TX_GPIO_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(DEBUG_USART_TX_GPIO_PORT, &GPIO_InitStructure);// 将USART Rx的GPIO配置为浮空输入模式GPIO_InitStructure.GPIO_Pin = DEBUG_USART_RX_GPIO_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(DEBUG_USART_RX_GPIO_PORT, &GPIO_InitStructure);// 配置串口的工作参数// 配置波特率USART_InitStructure.USART_BaudRate = DEBUG_USART_BAUDRATE;// 配置 针数据字长USART_InitStructure.USART_WordLength = USART_WordLength_8b;// 配置停止位USART_InitStructure.USART_StopBits = USART_StopBits_1;// 配置校验位USART_InitStructure.USART_Parity = USART_Parity_No ;// 配置硬件流控制USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;// 配置工作模式,收发一起USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;// 完成串口的初始化配置USART_Init(DEBUG_USARTx, &USART_InitStructure);// 串口中断优先级配置NVIC_Configuration();// 使能串口接收中断USART_ITConfig(DEBUG_USARTx, USART_IT_RXNE, ENABLE);    USART_ITConfig(DEBUG_USARTx, USART_IT_IDLE, ENABLE);// 使能串口USART_Cmd(DEBUG_USARTx, ENABLE);
}void USART1_IRQHandler(void)
{if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET){USART_ClearITPendingBit(USART1, USART_IT_RXNE); //只USART_ReceiveData也可以gUart1.rbuf[gUart1.length++]=USART_ReceiveData(USART1);}else if(USART_GetITStatus(USART1, USART_IT_IDLE) != RESET){USART1->SR;USART1->DR;printf("接收%s",gUart1.rbuf);gUart1.length=0;}
}

  • 特别要注意的是,USART_IT_IDLE标志位清零是读SR寄存器,然后读DR寄存器,用USART_ClearITPendingBit()或者直接对寄存器操作都是不行的

STM32串口读取一帧数据USART_IT_IDLE相关推荐

  1. STM32串口中断接收帧数据并返回给上位机总结(配合MAX3483)

    一.前言 这是我的第一篇CSDN,记录一些代码总结,一方面与大家分享交流,另一方面方便以后再次使用能够快速回忆,再就是提高自身写作水平.如有错误之处,欢迎各位大佬批评指正. 二.所涉及的芯片 1.ST ...

  2. 教你使用stm32接收串口的一帧数据!

    stm32支持接受单个数据或者一帧数据,若配置单个数据接收中断的话,会出现接收包丢包,数据不完整的情况!因此在stm32的串口中断中,还有一个IDLE中断,用来产生串口接受一帧数据而产生的中断,比如说 ...

  3. STM32串口接收不定长数据原理与源程序

    **STM32串口接收不定长数据原理与源程序**CSDN上有很多关于STM32串口接收不定长数据的文章,但实际使用后发现照搬他们的代码,程序根本就不能正确接收数据,其中最关键的一句有问题.其余内容完全 ...

  4. 基于HAL库STM32串口驱动不定长数据接收

    STM32串口驱动不定长数据接收带环形缓冲区 最新框架代码 使用方法 源码 串口接口文件 环形缓冲区接口文件 移植图示 使用涉及4个文件, UART_Port.c UART_Port.h Circul ...

  5. STM32配置读取BMP280气压传感器数据

    STM32配置读取BMP280气压传感器数据 BMP280是在BMP180基础上增强的绝对气压传感器,在飞控领域的高度识别方面应用也比较多. BMP280和BMP180的区别: 市面上也有一些模块: ...

  6. stm32串口传输数据第一个数据被吞_stm32串口发送数据复位 第一个数据丢失

    http://blog.csdn.net/kevinhg/article/details/40991655 STM32串口发送必须先检测状态,否则第一个字节无法发出,发送完毕,必须检测发送状态是否完成 ...

  7. stm32串口传输数据第一个数据被吞_STM32串口第一个字节丢失问题的分析过程

    STM32串口发送必须先检测状态,否则第一个字节无法发出,发送完毕,必须检测发送状态是否完成,否则,发送不成功,使用stm32f10x调试串口通讯时,发现一个出错的现象,硬件复位重启之后,发送测试数据 ...

  8. STM32串口显示DHT11温湿度数据,YL-69土壤湿度

    用的控制器是STM32F103C8T6,如果你用STMF103的其他芯片来跑这个代码也能跑通,基本配置都是一样的. 先介绍DHT11温湿度数据的采集,有两个文件,一个DHT11.c,还有一个DHT11 ...

  9. 工程思想——关于串口通讯协议帧数据的一些想法

    前言:之前在学校上计算机网络这门课程时候,被里面的各种协议绕的头晕眼花,总以为这些协议都已经被前辈固定,后生们只要按照之前的协议老老实实收发数据就能解决一切,直到自己也有做东西时要自己编写通讯协议时, ...

最新文章

  1. 目标形体形状轮廓重建:ICCV2019论文解析
  2. R语言bioconductor包—maftools的使用
  3. 【强化学习】数据科学,从计算到推理
  4. 林华达视角-概率图模型与计算机视觉
  5. iOS 之 获取View所在控制器
  6. Akash Network主网现已部署Sushiswap应用
  7. POJ NOI MATH-7648 蓄水池水管问题
  8. Java JDK中文帮助文档免费下载,百度网盘下载。
  9. linux中fdisk的参数,Linux fdisk命令参数及用法详解---Linux磁盘分区管理命令fdisk
  10. 网络邻居没有查看工作组计算机,为什么网上邻居内看不到计算机工作组
  11. 【iOS取证篇】iOS设备去除备份密码提取数据
  12. win10 软路由_「保姆级」万晓博带你用软路由搭建家庭网络中心第1节-准备工作...
  13. 楼板计算塑形弹性_土木吧丨弹性与弹塑性计算差异性分析
  14. 《东周列国志》第七十七回 泣秦庭申包胥借兵 退吴师楚昭王返国
  15. 人工智能技术在电气自动化中的应用,主要有哪些?
  16. 服务器使用固态硬盘的优缺点
  17. 看PDF时点击书签页面变小的解决方法
  18. cesium CLAMP_TO_GROUND 报错 Cannot read property ‘globe‘ of undefined
  19. 729. 我的日程安排表 I
  20. 如何设置迪文T5L串口屏的防盗版功能?

热门文章

  1. 去年阿里巴巴面试DBA归来,再结合老金的题目,出了MySQL DBA面试题目,欢迎大家补充。...
  2. 潭州学院html学习(day08)
  3. 作为一名网络工程师,分享下IT从业经验!
  4. 计算机作文+300字,有关电脑作文300字六篇
  5. 12个乒乓球,其中有11个球每个球重量一模一样,另外1个球重量和那11个球不一样.用天平称三次,把单独的球(和那11个重量不一样的球)找出来
  6. ​兼具Swin和ViT的优势!可用于MAE预训练的超简单层次Transformer结构
  7. 互联网呼唤版权社会化服务
  8. android 自动拨打电话和挂断电话(反射和intent方式)
  9. ThinkSNS积分商城系统功能详解!
  10. 用户登录查全表好还是用用户名好_白杨SEO:长尾关键词挖掘工具哪个好?5118站长工具功能大全看这...