STM32F4库函数初始化系列:串口DMA接收
1 u8 _data1[4];
2 void Configuration(void)
3 {
4 USART_InitTypeDef USART_InitStructure;
5 DMA_InitTypeDef DMA_InitStructure;
6 GPIO_InitTypeDef GPIO_InitStructure;
7 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
8 //TX
9 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
10 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
11 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
12 GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
13 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
14 GPIO_Init(GPIOB, &GPIO_InitStructure);
15 //RX
16 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
17 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
18 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
19 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
20 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
21 GPIO_Init(GPIOB, &GPIO_InitStructure);
22
23 GPIO_PinAFConfig(GPIOB, GPIO_PinSource10, GPIO_AF_USART3);
24 GPIO_PinAFConfig(GPIOB, GPIO_PinSource11, GPIO_AF_USART3);
25
26 DMA_InitStructure.DMA_Channel = DMA_Channel_4;
27 DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&(USART3->DR);
28 DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)_data1;
29 DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
30 DMA_InitStructure.DMA_BufferSize = 4;
31 DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
32 DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
33 DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
34 DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
35 DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
36 DMA_InitStructure.DMA_Priority = DMA_Priority_High;
37 DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;
38 DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;
39 DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
40 DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
41 DMA_Init(DMA1_Stream1, &DMA_InitStructure);
42 DMA_Cmd(DMA1_Stream1, ENABLE);
43
44 USART_OverSampling8Cmd(USART3, ENABLE);
45 USART_InitStructure.USART_BaudRate = 38400;
46 USART_InitStructure.USART_WordLength = USART_WordLength_8b;
47 USART_InitStructure.USART_StopBits = USART_StopBits_1;
48 USART_InitStructure.USART_Parity = USART_Parity_No;
49 USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
50 USART_InitStructure.USART_Mode = USART_Mode_Rx|USART_Mode_Tx;
51 USART_Init(USART3, &USART_InitStructure);
52 USART_DMACmd(USART3, USART_DMAReq_Rx, ENABLE);
53 DMA_Cmd(DMA1_Stream1, ENABLE);
54 USART_Cmd(USART3, ENABLE);
55 }
STM32F4库函数初始化系列:串口DMA接收的更多相关文章
- STM32之串口DMA接收不定长数据
STM32之串口DMA接收不定长数据 引言 在使用stm32或者其他单片机的时候,会经常使用到串口通讯,那么如何有效地接收数据呢?假如这段数据是不定长的有如何高效接收呢? 同学A:数据来了就会进入串口 ...
- STM32串口DMA接收数据错位——暴力解决方法
背景:两片STM32通过串口通信,为了减小CPU负担,采用DMA进行通信,发送端为STM32F103C8T6,接收端为STM32F407VET6.在调试的过程中发现,一直出现数据错位的问题,接收端尝试 ...
- STM32 HAL 库实现乒乓缓存加空闲中断的串口 DMA 收发机制,轻松跑上 2M 波特率
前言 直接储存器访问(Direct Memory Access,DMA),允许一些设备独立地访问数据,而不需要经过 CPU 介入处理.因此在访问大量数据时,使用 DMA 可以节约可观的 CPU 处理时 ...
- STM32 串口DMA方式接收(转)
STM32 是一款基于ARM Cortex-M3内核的32位MCU,主频最高可达72M.最近因为要在车机上集成TPMS功能, 便开始着手STM32的开发工作,STM32F10x系列共有5个串口(USA ...
- STM32—无需中断来实现使用DMA接收串口数据
本节目标: 通过DMA,无需中断,接收不定时长的串口数据 描述:当在串口多数据传输下,CPU会产生多次中断来接收串口数据,这样会大大地降低CPU效率,同时又需要CPU去做其它更重要的事情,我们应该如何 ...
- STM32 串口功能 库函数 详解和DMA 串口高级运用(转载)
数据传输时要从支持那些相关的标准?传输的速度?什么时候开始?什么时候结束?传输的内容?怎样防止通信出错?数据量大的时候怎么弄?硬件怎么连接出发,当然对于stm32还要熟悉库函数的功能 具起来rs232 ...
- STM32使用串口1配合DMA接收不定长数据,减轻CPU载荷
STM32使用串口1配合DMA接收不定长数据,减轻CPU载荷 http://www.openedv.com/thread-63849-1-1.html 实现思路:采 用STM32F103的串口1,并配 ...
- STM32CubeMX HAL库串口+DMA数据发送不定长度数据接收
参考资料:1.ST HAL库官网资料 2.https://blog.csdn.net/u014470361/article/details/79206352#comments 一.STM32CubeM ...
- 串口配合DMA接收不定长数据(空闲中断+DMA接收)-(转载)
1.空闲中断和别的接收完成(一个字节)中断,发送完成(发送寄存器控)中断的一样是串口中断: 2.空闲中断是接收到一个数据以后,接收停顿超过一字节时间 认为桢收完,总线空闲中断是在检测到在接收数据后, ...
- 串口1配合DMA接收不定长数据(空闲中断+DMA接收)
1.空闲中断和别的接收完成(一个字节)中断,发送完成(发送寄存器控)中断的一样是串口中断: 2.空闲中断是接收到一个数据以后,接收停顿超过一字节时间 认为桢收完,总线空闲中断是在检测到在接收数据后, ...
随机推荐
- Go语言核心36讲48
你真的很棒,已经跟着我一起从最开始初识Go语言,一步一步地走到了这里. 在这之前的几十篇文章中,我向你一点一点地介绍了很多Go语言的核心知识,以及一些最最基础的标准库代码包.我想,你已经完全有能力独立 ...
- 【云原生 · Kubernetes】Kubernetes简介及基本组件
1.Kubernetes简介 Kubernetes是Google开源的容器集群管理系统,其提供应用部署.维护. 扩展机制等功能,如图1.3所示.利用Kubernetes能方便地管理跨机器运行容器化的应 ...
- UBOOT编译--- UBOOT全部目标的编译过程详解(九)
1. 前言 UBOOT版本:uboot2018.03,开发板myimx8mmek240. 2. 概述 本文接续上篇文章,采用自下而上的方法,先从最原始的依赖开始,一步一步,执行命令生成目标.这里先把上 ...
- 关于deepin-wine或wine设置PATH环境变量的方法
前言 更改wine中PATH变量主要是为了能在 cmd输入一些命令而已,这里你可能会问怎么用cmd? deepin-wine cmd 这样就进入了cmd,而设置PATH 环境变量不能像windows一 ...
- kubernetes数据持久化PV-PVC详解(一)
官方文档地址: https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes/ 1. 什么是PV,PVC? 1.1 什么是P ...
- oracle 内置函数(三)日期函数
日期函数概要: 系统时间 日期操作 一.系统时间 sysdate:还是西方的格式,我们一般需要to_char(date,'yyyy-mm-dd hh24:mi:ss') next_day:当前日期的下 ...
- GKCTF2021 MISC
1.签到 当时没签上┭┮﹏┭┮: 追踪http流,发现依次执行[ls][ls/][whoami] 发现存在[fl4g],同时发现破解的规则为hex decode->base64 decode-& ...
- 【每日一题】【树的dfs递归,返回多次,注意都遍历完后才最终返回】2022年1月6日-112. 路径总和
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum .判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum .如果存在,返回 tr ...
- Python:灵活的开发环境
以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「englyf」https://mp.weixin.qq.com/s/WTl7BPAhX5VuK-gmHaErMg 本文大概 1667 个 ...
- 同时容器,k8s和docker区别是什么? 如何简单理解k8s和docker
1.k8s是一个开源的容器集群管理系统,可以实现容器集群的自动化部署.自动扩缩容.维护等功能. 2.Docker是一个开源的应用容器引擎,开发者可以打包他们的应用及依赖到一个可移植的容器中,发布到流行 ...