访问电脑版页面

导航:老古开发网手机版STM32单片机STM32单片机的USART

STM32单片机的USART接收数据问题解决方案

导读:
关键字:
STM32单片机,USART,dma,

先使用USART中断函数接收数据,判断是否接收到每帧数据的起始标记字符。如果接收到就关闭USART中断,然后开启DMA用于后续串口数据的接收。但是出现一个问题是每帧数据的起始标记为:A5 4A 05 00 00 40 81

然后开启DMA传输后所接收收到的第一个数据为0x81,也就是起始标志字符的最后一个数据。

造成这样问题的原因是:

在USART初始化时使用了函数:USART_DMACmd(USART1,USART_DMAReq_Rx,ENABLE);

虽然此时DMA没有被使能,但是硬件上已经开始做DMA传输检测了。

解决办法:

将函数:USART_DMACmd(USART1,USART_DMAReq_Rx,ENABLE);从串口初始化函数中删除掉,然后和使能DMA传输函数放在一起。这样就成功解决问题了。

来源:工程师周亮   作者:lhl545545  2018/12/6 15:36:00
栏目: [ STM32单片机的USART]

相关阅读

STM32 USART串口DMA接收和发送模式

如何采用STM32单片机串口接收数据

STM32F407的UART串口初始化

STM32单片机串口通讯故障排除处理过程

STM32f103 双串口配置和中断

STM32F4 USART配置

STM32单片机串口的定义及应用方法

STM32单片机串口波特率的计算方法解析

基于STM32单片机发送字符串的函数

STM32单片机UART发送配置的步骤及方法

STM32单片机重映射USART设计

如何利用STM32单片机串口发送字符串

基于STM32单片机的串口使用解析

如何在STM32串口通信程序中使用printf发送数据

STM32_USART输入输出讲解

什么是串口通信?基于STM32的printf打印输出

基于STM32F4单片机USART寄存器控制的设计

STM32之USART配置

STM32 普通IO口 模拟串口

STM32串口输出乱码的原因