STM32高速串口通信DMA收发实现 测试平台 平台 晶振 BSP库 串口 STM32F030C8T6 12MHz 标准库 UART1、UART2 STM32F103ZET6 8MHz 标准库 UART1、UART2 ... 实现功能 收/发环形缓冲区 不定长度接收处理 高速(1.5Mbps)通信不丢数据 关键实现 DMA发送模式 线程循环查询发送环形缓冲区数据,然后启动MDA传输 DMA传输完成中断,连续发送 定时器中断周期发送 DMA接收模式 DMA缓存半满中断(如CPU硬件支持,可使用DMA双缓存机制) DMA缓存传输完成中断 串口空闲中断实现 其他 更详细的描述过程参考文章
2022-05-18 14:17:44 1.53MB stm32 uart fifo dma
1
使用STM32C8T6,按键发送数据,发送数据带有发送缓冲区,使用KEIL编译器stm32库开发例程
2022-05-07 21:09:34 630KB stm32 串口
1
STM32硬件开发用,很方便的测试STM32为主芯片所附带的传感器,通迅模块的好坏及指令。
2022-05-06 15:59:57 1.13MB STM32 串口互传 USART1 USART2
1
stm32rbt6,同时使用串口1与串口2的程序。移植时只需要复制usart1.c,usart2.c和usart2.h即可
2022-05-03 17:41:42 926KB stm32,串口
1
环形队列的实现:在计算机中,也是没有环形的内存的,只不过是我们将顺序的内存处理过,让某一段内存形成环形,使他们首尾相连,简单来说,这其实就是一个数组,只不过有两个指针,一个指向列队头,一个指向列队尾。指向列队头的指针(Head)是缓冲区可读的数据,指向列队尾的指针(Tail)是缓冲区可写的数据,通过移动这两个指针(Head) &(Tail)即可对缓冲区的数据进行读写操作了,直到缓冲区已满(头尾相接),将数据处理完,可以释放掉数据,又可以进行存储新的数据了。 实现的原理:初始化的时候,列队头与列队尾都指向0,当有数据存储的时候,数据存储在‘0’的地址空间,列队尾指向下一个可以存储数据的地方‘1’,再有数据来的时候,存储数据到地址‘1’,然后队列尾指向下一个地址‘2’。当数据要进行处理的时候,肯定是先处理‘0’空间的数据,也就是列队头的数据,处理完了数据,‘0’地址空间的数据进行释放掉,列队头指向下一个可以处理数据的地址‘1’。从而实现整个环形缓冲区的数据读写。 1/** 2* @brief Write_RingBuff 3* @param u8 data 4* @return FLASE:环形缓冲区已满,写入失败;TRUE:写入成功 5* @author 杰杰 6* @date 2018 7* @version v1.0 8* @note 往环形缓冲区写入u8类型的数据 9*/ 10u8 Write_RingBuff(u8 data) 11{ 12 if(ringBuff.Lenght >= RINGBUFF_LEN) //判断缓冲区是否已满 13 { 14 return FLASE; 15 } 16 ringBuff.Ring_Buff[ringBuff.Tail]=data; 17// ringBuff.Tail++; 18 ringBuff.Tail = (ringBuff.Tail+1)%RINGBUFF_LEN;//防止越界非法访问 19 ringBuff.Lenght++; 20 return TRUE; 21} 具体见我博客:https://blog.csdn.net/jiejiemcu/article/details/80563422
2022-05-02 20:05:23 2.62MB stm32 串口 环形队列 缓冲区 
1
matlab和stm32串口通信并绘制图表
2022-04-26 03:18:38 983B matlab stm32 开发语言 arm
1
利用串口下载程序的具体步骤、操作方法及注意事项,并附带所需的下载工具,
2022-04-08 12:48:52 51.25MB STM32
1
STM32 串口中断方式例程 /*---------------------------------------------------------------------------- USART1_IRQHandler Handles USART1 global interrupt request. *----------------------------------------------------------------------------*/ void USART1_IRQHandler (void) { volatile unsigned int IIR; struct buf_st *p; IIR = USART1->SR; if (IIR & USART_FLAG_RXNE) { // read interrupt USART1->SR &= ~USART_FLAG_RXNE; // clear interrupt p = &rbuf; if (((p->in - p->out) & ~(RBUF_SIZE-1)) == 0) { p->buf [p->in & (RBUF_SIZE-1)] = (USART1->DR & 0x1FF); p->in++; } } if (IIR & USART_FLAG_TXE) { USART1->SR &= ~USART_FLAG_TXE; // clear interrupt p = &tbuf; if (p->in != p->out) { USART1->DR = (p->buf [p->out & (TBUF_SIZE-1)] & 0x1FF); p->out++; tx_restart = 0; } else { tx_restart = 1; USART1->CR1 &= ~USART_FLAG_TXE; // disable TX interrupt if nothing to send } } }
2022-04-07 11:02:33 459KB STM32 串口
1
STM32串口下载程序软件(eisp.exe ),本人之前用loadflash总是不能下载,用了这个软件就不会出错了。
2022-03-31 11:34:28 957KB STM32 串口下载程序 软件
1
STM32学习笔记:USART串口 https://blog.csdn.net/thebestleo/article/details/110229383
2022-03-29 16:50:17 272KB STM32USART
1