stm32串口加dma接收问题

发布者:哈哈哈33最新更新时间:2018-10-05 来源: eefocus关键字:stm32  串口  dma  接收问题 手机看文章 扫描二维码
随时随地手机看文章

设置:串口使能空闲中断;使用dma接收;dma中断屏蔽


现象:只要接收到的数据大于设置dma接收的长度,就会收不到数据,但是能进串口空闲中断


解决:把dma的中断打开,就会解决掉上述的溢出造成的结果。


关键字:stm32  串口  dma  接收问题 引用地址:stm32串口加dma接收问题

上一篇:stm32学习笔记(1):实时时钟RTC
下一篇:STM32高级开发-在GCC和GNU中使用printf打印串口数据

推荐阅读最新更新时间:2024-03-16 16:14

stm32 ADC模数转换 ADC多通道 ADC DMA
通过调节电位器,改变AD转换值和电压值 STM32F1 ADC 配置步骤 1.使能GPIO时钟和ADC时钟 2.配置引脚模式为模拟输入 3.配置ADC的分频因子 4.初始化ADC参数,ADC_InitTypeDef 5.使能ADC 6.执行ADC校准 7.设置ADC软件启动 8.读取ADC转换值 9.设置ADC规则,采样时间等 10.使能ADC的软件转换 11.读取ADC转换结果 举例 u16 ADC_value(u8 time) { u8 i = 0; u16 value; for(i = 0; i time; i++) { ADC_SoftwareStartConvCmd
[单片机]
<font color='red'>stm32</font> ADC模数转换 ADC多通道 ADC <font color='red'>DMA</font>
关于STM32外接4—16MHz晶振主频处理方法
由于STM32F10x库官方采用的是默认的外接8MHz晶振,因此造成很多用户也采用了8MHz的晶振,但是,8MHz的晶振不是必须的,其他频点的晶振也是可行的,只需要在库中做相应的修改就行。 在论坛上看到很多用户反映,使用外接12MHz的晶振,会造成很多的问题,如USART的波特率不正确,Systick走时不准等问题,在无论是在实际调试还是在软件模拟中都会发现这个情况,其实,这不能怪ST官方,我们必须肯定ST官方为方便用户开发所做的努力,下面我们就通过简单的三个步骤就可以让你随意的使用4—16MHz之内任何频点的晶振,我们以STM32F10x_StdPeriph_Lib_V3.4.0为例说明。 第一步,打开stm32f10x
[单片机]
STM32单片机学习总结之------位操作
储备知识: 与(&)运算 0&0=0,0&1=0,1&0=0,1&1=1 非(~)运算 在二进制中1变0,0变1 或(|)运算 0|0=0,0|1=1,1|0=1,1|1=1 异或(^)运算,同为假,异为真 0^0=0 0^1=1 1^0=1 1^1=0 学习内容: 库函数的实现涉及到不少位操作,下面为几个常用的位操作方法,可以排除阅读代码的障碍。 char型只占一个字节,取值范围为-128 ~ +127 1、将char型变量a的第七位(bit6)清0,其它位不变。 2、同理,将变量a的第七位(bit6)置1,其它位不变的方法如下 3、将变量a的第七位(bit6)取反,其它位不变。 学习总结: 以上
[单片机]
<font color='red'>STM32</font>单片机学习总结之------位操作
关于stm32串口重定向问题详解
usart这部分代码我也是从网上copy出来的,一下是作者的解释: 简单地说:想在mdk 中用printf,需要同时重定义fputc函数和避免使用semihosting(半主机模式), 标准库函数的默认输出设备是显示器,要实现在串口或LCD输出,必须重定义标准库函数里调用的与输出设备相关的函数. 例如:printf输出到串口,需要将fputc里面的输出指向串口(重定向),方法如下: #ifdef __GNUC__ /* With GCC/RAISONANCE, small printf (option LD Linker- Libraries- Small printf set to 'Yes') calls
[单片机]
关于<font color='red'>stm32</font>中<font color='red'>串口</font>重定向<font color='red'>问题</font>详解
多版本STC单片机的CRC串口校验程序
单片机源程序如下: #include reg52.h #include intrins.h typedef unsigned char uchar8; typedef unsigned short uint16; typedef unsigned long uint32; bit Bee_flag = 0; bit Rx_start_flag; bit Rx_stop_flag; bit crc_flag = 0; uchar8 Rx_BUF ; uchar8 Rx_count; uint32 crcData; uint32 crcData_temp; uchar8 Rx_data_buf ; uchar8 T
[单片机]
让汽车ECU开发事半功倍,ST AutoDevKit工具包是何物?
常态下,工程师眼中的汽车 ECU 开发:复杂 1. 需求分析和顶层设计; 2. 元器件选型、硬件模组原理图设计、PCB 打样、PCBA 与单元模组测试; 3. 模组组装; 4. 软件开发与测试; 5. 系统测试、修正与再修正、认证。 用 ST AutoDevKit 后,工程师眼中的汽车 ECU 开发:搭积木 1. 需求分析,定下目标; 2. 模组、技术的选择和订购,也可进行解决方案推荐,硬件式“搭积木”; 3. 下载 AutoDevKit 免费软件开发环境,调用必要软件栈,根据操作指示说明完成应用开发; 4. 资深专家辅助测试与验证。 AutoDevKit 是何物?哪些人可从中受益?
[汽车电子]
让汽车ECU开发事半功倍,ST AutoDevKit工具包是何物?
STM32 GPIO复用功能与设置
GPOIO可作为I2C,SPI,USART等通讯接口,这就是所谓的复用功能(alternate function output)。 GPIO的复用功能由AFRL及AFRH两个寄存器来设定(因为Cortex Mx为32位CPU,所以每个寄存器有32bits可供控制)。 STM32针对每个接口pin设计了16种复用功能(AF0~AF15),因为每个pin占用4个bits,所以每个寄存器管理8个pins(AFRL:0~7,AFRH:8~15)。如下图所示: 每个pin只能设定一种复用功能,当系统reset之后,所有的复用功能都复位为AF0(也就是系统的初始功能)。 哪些port(GPIOx,x=A~K),pin与寄存器状
[单片机]
怎么使用C语言控制硬件
C语言的应用编程在单片机的领域占了很大一部分,使用的比较多的51单片机和STM32单片机都可以使用MDK软件编写固件。 单片机烧写了固件后可以点亮LED灯,可以驱动ADC检测电压,也可以驱动蜂鸣器发声,这就是简单地控制硬件。稍微复杂一点的,可以驱动NRF2401进行无线的连接,也可以使用ESP8266这类wifi芯片连接网络。 接下来,简单地讲讲如何使用C语言控制硬件。 1、电路连接 简单的模块可以直接使用高低电平来控制,比如红外线发射模块,当你在驱动引脚上的电压达到3.3v,就能发出红外线;然后将电平设置为0v,红外线发射就停止了。 一般而言,单片机的引脚输出电压能够达到3.3v,也是可以点亮红外线LED,但是可能会导致
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved