硬件平台:STM32F4系列 程序设计:基于STM32HAL库,UART DMA方式接收与发送,串口数据缓存使用lwrb(FIFO),接收与发送的数据实现零拷贝,为了单片机使用效率,可以参考。 测试验证:上位机向两个串口进行1ms定时发送1024字节,百万数据量收发正常
2024-10-07 11:43:23 31.24MB stm32 UARTDMA FIFO UART
1
DMA串口通信相关源码
2024-04-24 18:14:01 2.7MB stm32
1
STM32F103串口空闲中断+DMA接收不定长数据
2024-02-25 21:28:23 14.32MB stm32 IDLE DMA
1
Life moves pretty fast. If you don’t stop and look around once in a while, you could miss it. 人生匆匆,若不偶尔停下来看看周围,便会错过许多风景。 一、串口数据不定长接收的实现 通常在裸机中,我们使用一个定时器来辅助串口实现串口数据不定长接收,也就是当串口接收数据时,定时器一直处于定时值(比如100ms),接收不断的把数据放入缓冲区(通常可使用数组),当串口空闲时,定时器开始计时,当计时时间到,读取缓冲区的数据即可,这样就实现了数据的不定长接收。 而使用RTOS,可以使用消息队列来作为缓冲区,串口每次
2023-12-06 15:30:53 63KB read
1
STM32F407ZGT6 使用Hal库(Cube配置) 采用 方法1 串口空闲中断+串口接收中断配合 方法2 串口空闲中断+DMA方式 实现串口接收不定长数据并发送接收到的数据
2023-04-22 20:25:39 14.57MB STM32串口
1
单片机串口通过控制IO口来控制继电器;接收不定长数据;将接收到的数据反穿给串口;
2023-04-01 09:53:29 1.87MB CYY DPJ
1
基于STM32F4平台的串口DMA双缓冲实验程序,加空闲中断不定长,加FIFO循环,结构稳定,可直接用于项目中,实测2M波特率无压力
2023-02-26 12:20:48 19.32MB STM32 DMA 串口 不定长
1
K均值的时间复杂度为NKTD,其中,N代表样本个数,K代表k值,即聚类中心点个数,T代表循环次数,D代表样本数据的维度。 本算法的改进主要在以下方面: 一, 初始聚类中心点,传统的初始中心点是随机选择,由于K均值算法受初始中心点影响较大,为获得更好的效果,在本方法中,先将数据采用层次聚类的方法预处理,得到的k个中心点作为K均值算法的中心点。 二, 传统的聚类中心点更新是在结束一次循环后,本方法的聚类中心采用实时更新策略,即每次将一个模式归于一个新的聚类中心时,即立刻更新新的所属中心和原属聚类中心的中心值,增强算法的收敛性。 三, 为达到类内方差最小化,类类方差最大化这一原则,考虑到往往设定的K值不一定能很好实现聚类效果,故将以往的固定聚类中心改为一浮动区间。原有K为最小聚类中心个数,另设一聚类中心个数上限maxK。其具体实现如下: 1) 当一待聚类的模式得到其最近中心时,计算该聚类中心类内方差和将此模式归于该中心之后的类内方差,如果两者差别大于某设定阈值,则以该模式数据为基础,得到一新的聚类中心。 2) 当当前聚类中心个数等于设定的最大聚类中心时,合并最相邻的两个聚类。为使得到的聚类效果更为均衡,应该优先合并维度较小的聚类类别。
2022-12-19 08:49:27 1.85MB 层次聚类 K均值 不定K
1
使用CubeMX封装的FreeRTOS操作系统,可直接写入到正点原子mini开发板之中或者任何一块stm32F103RCT6的板子上。 实现功能:1.有一个任务实现功能是PA8引脚(外接LED灯)可以实现呼吸灯效果。 2. UART1使用DMA+双缓存方式存放数据,并将收到的数据长度和内容即时存放到队列之中,然后交给另一个任务。这个任务即时把队列中的数据用串口返回给上位机。 如果是从我的文章来的,可以直接看stm32f1xx_it.c文件,所有的DMA处理逻辑基本就写在这个文件里面啦~ 因为中文注释会在CubeMX每一次代码初始化的时候被搞乱,所以只能用英文注释了 qaq
2022-11-22 22:30:27 24.85MB 单片机 stm32 DMA 串口
1
串口通信(UART)在通信当中尤其是在低速率占用很重要的地位, 通信 速度虽然比不上SPI通信,但是由于其简单,对通信双方的时钟要求不是很高,受到很广泛的使用,很多嵌入式程序猿(媛) 都倾向于串口通信。 1. 串口发送 串口发送函数非常简单,直接调用串口的API函数 void USART_SendData(USART_TypeDef USARTx, uint16_t Data);* 即可发送出去,举个简单的实例: void Usart1_SendData(u8 *Str) //Str存储发送的数据 { u8 i=0; while(Str[i]!=0) { USAR
2022-10-30 13:12:51 76KB dma stm32 串口
1