【MM32F103 MiniBoard试用体验】+MiniBoard UART2 DMA收发测试

  • loudianxin
  • LV2工程师
  • |      2016-11-21 16:24:30
  • 浏览量 771
  • 回复:3
本帖最后由 loudianxin 于 2016-11-21 20:45 编辑 看了看板子的资源还是挺好的,例程里面有UART1 的dma配置。所以先不管UART1,从UART2开始。对于STM32串口接收有一个空闲中断用它来接收不定长数据还是比较方便,但是看了MM32的串口没发现有这个功能,亦或者是有类似的我没找到。在这里提出来希望有做过的一起讨论下接受不定长数据的方法。 下面附带UART2 DMA收发的代码: 按照例程稍作修改 1.首先初始化GPIO这个比较简单 2.初始化串口主要有 波特率,字长,停止位,奇偶检验位,硬件数据流控制,收发模式 3.使能UART2的DMA 功能 UART_DMACmd(UART2,UART_DMAReq_EN,ENABLE); //UART2 DMA Enable 4.初始化DMA通道,uart2接收使用DMA1_CH6,发送使用DMA1_CH7,在配置的时候要注意数据方向,其他都大同小异。具体可以参看代码。 ps: 串口采用DMA发送的时候可以随意配置发送数据长度(当然不要超过数组长度),发送完成后会进入DMA发送完成中断,在中断里面清掉对应的中断标志。在发送新的数据时要注意中心配置DMA的数据源(即数据发送数组)和DMA数据长度。否则在重新发送的时候数据总是会出现0。问过灵动微技术说是由于发送数据时DMA发送到数组的最后一位,如果重新发送则指针不能自动移动到数组的开始元素,所以发送数据不对 。
  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:3
loudianxin 2016-11-21
按照例程稍作修改 1.首先初始化GPIO这个比较简单 2.初始化串口主要有 波特率,字长,停止位,奇偶检验位,硬件数据流控制,收发模式 3.使能UART2的DMA 功能 UART_DMACmd(UART2,UART_DMAReq_EN,ENABLE); //UART2 DMA Enable 4.初始化DMA通道,uart2接收使用DMA1_CH6,发送使用DMA1_CH7,在配置的时候要注意数据方向,其他都大同小异。具体可以参看代码。 ps: 串口采用DMA发送的时候可以随意配置发送数据长度(当然不要超过数组长度),发送完成后会进入DMA发送完成中断,在中断里面清掉对应的中断标志。在发送新的数据时要注意中心配置DMA的数据源(即数据发送数组)和DMA数据长度。否则在重新发送的时候数据总是会出现0。问过灵动微技术说是由于发送数据时DMA发送到数组的最后一位,如果重新发送则指针不能自动移动到数组的开始元素,所以发送数据不对 。
0   回复
举报
发布
haodi 2016-11-21
如何收发的哦?
0   回复
举报
发布
灵澈 2016-11-21
楼主后续的帖子质量要高点哦
0   回复
举报
发布
x
收藏成功!点击 我的收藏 查看收藏的全部帖子