tag 标签: 串口接收

相关博文
  • 热度 6
    2020-9-24 12:06
    935 次阅读|
    1 个评论
    STM32 串口 DMA方式接收数据及数据处理方法
    通常我们都使用中断方式接收串口数据。用DMA方式接收,效率会更高。 先在CUBE中设置一下。 使用 UART DMA 接收功能,并使用 Circular 模式。收到的数据将循环放在缓冲区里。 #define BUFFERSIZE 128 uint8_t Uart1RxBuf ; // 软件中定义一个接收缓冲区 uint16_t curchr,lastchr; // 指向当前未处理过的字符和最后一个字符。 HAL_UART_Receive_DMA(&huart1,Uart1RxBuf,BUFFERSIZE); // 程序初始化时,需要启动一次 UART DMA 接收。 /* 需要定时查询是否收到数据。 */ NDTR; // NDTR 指示存储空间的剩余长度 if(curchr != lastchr) { LEDRUNON(); // 指示收到一个数据包 SerialParse(Uart1RxBuf,&curchr,lastchr); } 找 SerialParse 寻找自定协议中的数据包的头和尾。 因为数据是循环接收的,有可能一个数据包会分布在缓冲区尾部和头部。索引时,需要取模运算。 (data == 'E')&&(data == 'R')&&(data == 'R') 好处就是,串口一直接收着,不会丢掉任何数据,只要合理的缓冲区长度,并及时处理数据。能达到很高的速度且不丢包。
相关资源
  • 所需E币: 1
    时间: 2020-5-25 15:09
    大小: 1.11KB
    上传者: Argent
    VB是早期比较流程的编程语言,VisualBasic由微软公司开发,是世界上使用人数最多的语言。它源自于BASIC编程语言。VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。程序员可以轻松的使用VB提供的组件快速建立一个应用程序。感兴趣的网友们快来下载,练练手吧。
广告