串口1接收不定长数据

实验板是原子mini板

一开始使用官方库,只能接受定长数据。把数据长度设置为1时,发送多字节数据时又会丢数。所以自己重写串口中断处理函数。

首先搞一下Cube配置用法:Mode选异步,下边设置好参数。

设置串口中断

然后就配置完了。生成代码

第一步在主函数初始化阶段添加如下代码(HAL F4 串口中断不响应可能就是这里没开)

__HAL_UART_ENABLE_IT(&huart1,UART_IT_RXNE);//开串口1中断

第二步,删除官方库函数,添加自己的中断函数(如果再生成代码的话要再删除一次官方函数的调用)

void USART1_IRQHandler(void)
{/* USER CODE BEGIN USART1_IRQn 0 */user_Uart1Handler();//stm32Mxcube重新配置生成代码后需要注释掉函数void USART1_IRQHandler(void)中的HAL_UART_IRQHandler(&huart1);就是下面这句/* USER CODE END USART1_IRQn 0 *///HAL_UART_IRQHandler(&huart1);/* USER CODE BEGIN USART1_IRQn 1 *//* USER CODE END USART1_IRQn 1 */
}

第三步,重写函数,如下

void user_Uart1Handler(void)
{//接收寄存器非空if((__HAL_UART_GET_FLAG(&huart1,UART_FLAG_RXNE)!=RESET))  {USART1_RX_BUF[USART1_RX_BUF_Index]=(uint8_t)(huart1.Instance->DR & (uint8_t)0x00FF);USART1_RX_BUF_Index++;__HAL_UART_CLEAR_FLAG(&huart1,UART_FLAG_RXNE);}else{}     }

这样就能就收了。

我也是借鉴了其他帖子,一般都是用DMA或者空闲中断,我都不太了解就没用。我用标准库的时候就是这么写的检查非空,保存数据,然后把非空标志清除。先用着等遇到其他问题的时候再解决。

HAL库实践记录之串口接收不定长数据相关推荐

  1. openmv串口数据 串口助手_STM32 串口接收不定长数据 STM32 USART空闲检测中断

    编者注: 单片机串口接收不定长数据时,必须面对的一个问题为:怎么判断这一包数据接收完成了呢?常见的方法主要有以下两种: 1.在接收数据时启动一个定时器,在指定时间间隔内没有接收到新数据,认为数据接收完 ...

  2. ZYNQ进阶之路14--PS端uart串口接收不定长数据

    ZYNQ进阶之路14--PS端uart串口接收不定长数据 导语 ZYNQ串口简介 实现步骤 导语 繁忙的博主又来了,本节我们实现一个比较简单的东西:串口.之前的章节中我们也有使用PS端的串口进行收发数 ...

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

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

  4. HAL库的串口基础学习(包含串口接收不定长数据的实现)

    HAL库的串口基础学习(1) HAL库有一个特点就是对于许多外设的初始化以及功能操作,都提供有一个weak版本的函数,这是充分的展现出库名字的含义(Hardware Abstraction Layer ...

  5. 处理串口接收不定长数据的另一种解决方法

    开发平台:Keil 5 库函数版本:V3.5 芯片:STM32F103CBT6 之前我在我的另一篇博客中介绍过使用串口空闲中断+DMA的方式来处理不定长数据,没有看过的同学可以点击这里查看.今天要介绍 ...

  6. 串口接收不定长数据的几种方式

    在阅读本文前,你需要先做到串口成功接收一个数据(相信这一点是很简单的)  这几天简单总结了一下用串口怎么接收一帧数据的办法,个人使用的有三种,下面逐一介绍: 第一种:使用中断的方式: 这种在数据接收不 ...

  7. stm32串口接收不定长数据_基于STM32之UART串口通信协议--接收

    一.前言 1.简介 回顾上一篇UART发送当中,已经讲解了如何实现UART的发送操作了,接下来这一篇将会继续讲解如何实现UART的接收操作. 2.UART简介 嵌入式开发中,UART串口通信协议是我们 ...

  8. STM32使用串口IDLE中断的两种接收不定长数据的方式

    现在有很多数据处理都要用到不定长数据,而单片机串口的RXNE中断一次只能接收一个字节的数据,没有缓冲区,无法接收一帧多个数据,现提供两种利用串口IDLE空闲中断的方式接收一帧数据,方法如下: 方法1: ...

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

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

最新文章

  1. 正则数字和小数点_Python中的正则表达式【不断补充~】
  2. 在RichTextEditor组件中使用自定义右键。
  3. jQuery HTML 添加和删除元素
  4. Keras之DNN:利用DNN算法【Input(8)→12+8(relu)→O(sigmoid)】利用糖尿病数据集训练、评估模型(利用糖尿病数据集中的八个参数特征预测一个0或1结果)
  5. 042——VUE中组件之子组件使用$on与$emit事件触发父组件实现购物车功能
  6. sigar如何获取linux的buffer内存,Linux 下使用Sigar 获取内存信息
  7. 20145202马超《信息安全系统设计基础》实验二总结
  8. Javascript中的几种继承方式比较
  9. opencv-api drawKeypoints drawMatches
  10. 12个写论文必备的神经网络可视化工具
  11. 凭证反过账 金蝶k3_建议收藏!金蝶快捷键操作大全!
  12. 提高数据质量的方法有哪些
  13. 窗口及元素尺寸大小位置获取方法记录
  14. 360浏览器:中国为什么没有自主研发的浏览器内核?
  15. c语言入门经典+第5版+习题答案,《C语言入门经典(第5版)》—甲虎网一站式图书批发平台...
  16. 四阶龙格库塔法(Runge-Kutta)求解常微分方程的 Matlab程序及案例
  17. php工作流根据不同流程保存,启用SuiteCRM工作流(workflow)-权威指南
  18. STM32f407程序移植到GD32F407
  19. apache ftpserver 被动模式配置
  20. 打印日志文件并将其上传存到HDFS中

热门文章

  1. 管理会计中关于成本的几个概念
  2. 微软翻译离线简体中文服务器,微软翻译新增离线翻译功能,但使用体验并没有想象中的好...
  3. 【科创人】瑞云创始人汪忠田:售后服务SaaS市场拓荒者
  4. 人民币贬值不是大问题
  5. 2023新年红包,兔年HTML红包页面代码【2023新年快乐_附源码】
  6. 阿里云服务器通用型实例g5与g6区别及如何选择?
  7. 快速学习-登录功能实现-LoginServlet
  8. 外设驱动库开发笔记40:AT25xxx外部存储器驱动
  9. 这5款堪称神器的插件,能让你的效率提升3-4倍!还不知有点遗憾
  10. 厦门大学“网宿杯“17届程序设计竞赛决赛(同步赛) #题解 #题目都超有趣呀