初始化:

 1 void MX_USART1_UART_Init(void)
2 {
3
4 /* USER CODE BEGIN USART1_Init 0 */
5
6 /* USER CODE END USART1_Init 0 */
7
8 LL_USART_InitTypeDef USART_InitStruct = {0};
9
10 LL_GPIO_InitTypeDef GPIO_InitStruct = {0};
11
12 /* Peripheral clock enable */
13 LL_APB1_GRP2_EnableClock(LL_APB1_GRP2_PERIPH_USART1);
14
15 LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOA);
16
17 LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_DMA1);
18 /**USART1 GPIO Configuration
19 PA9 ------> USART1_TX
20 PA10 ------> USART1_RX
21 */
22 GPIO_InitStruct.Pin = LL_GPIO_PIN_9;
23 GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
24 GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
25 GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
26 GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
27 GPIO_InitStruct.Alternate = LL_GPIO_AF_1;
28 LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
29
30 GPIO_InitStruct.Pin = LL_GPIO_PIN_10;
31 GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
32 GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
33 GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
34 GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
35 GPIO_InitStruct.Alternate = LL_GPIO_AF_1;
36 LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
37
38 /* USART1 DMA Init */
39 LL_DMA_DeInit(DMA1, LL_DMA_CHANNEL_3);
40 /* USART1_RX Init */
41 LL_DMA_SetDataTransferDirection(DMA1, LL_DMA_CHANNEL_3, LL_DMA_DIRECTION_PERIPH_TO_MEMORY);
42
43 LL_DMA_SetChannelPriorityLevel(DMA1, LL_DMA_CHANNEL_3, LL_DMA_PRIORITY_LOW);
44
45 LL_DMA_SetMode(DMA1, LL_DMA_CHANNEL_3, LL_DMA_MODE_NORMAL);
46
47 LL_DMA_SetPeriphIncMode(DMA1, LL_DMA_CHANNEL_3, LL_DMA_PERIPH_NOINCREMENT);
48
49 LL_DMA_SetMemoryIncMode(DMA1, LL_DMA_CHANNEL_3, LL_DMA_MEMORY_INCREMENT);
50
51 LL_DMA_SetPeriphSize(DMA1, LL_DMA_CHANNEL_3, LL_DMA_PDATAALIGN_BYTE);
52
53 LL_DMA_SetMemorySize(DMA1, LL_DMA_CHANNEL_3, LL_DMA_MDATAALIGN_BYTE);
54
55 /* USER CODE BEGIN USART1_Init 1 */
56 LL_DMA_SetMemoryAddress(DMA1,LL_DMA_CHANNEL_3,(uint32_t)g_sSecUartInfo.ucRbuf);
57 LL_DMA_SetPeriphAddress(DMA1,LL_DMA_CHANNEL_3,(uint32_t)&USART1->RDR);
58 LL_DMA_SetDataLength(DMA1,LL_DMA_CHANNEL_3,Sec_UART_MAX_LEN);
59
60 /* USER CODE END USART1_Init 1 */
61 USART_InitStruct.BaudRate = 1200;
62 USART_InitStruct.DataWidth = LL_USART_DATAWIDTH_8B;
63 USART_InitStruct.StopBits = LL_USART_STOPBITS_1;
64 USART_InitStruct.Parity = LL_USART_PARITY_NONE;
65 USART_InitStruct.TransferDirection = LL_USART_DIRECTION_RX;
66 USART_InitStruct.HardwareFlowControl = LL_USART_HWCONTROL_NONE;
67 USART_InitStruct.OverSampling = LL_USART_OVERSAMPLING_16;
68 LL_USART_Init(USART1, &USART_InitStruct);
69 LL_USART_DisableIT_CTS(USART1);
70 LL_USART_ConfigAsyncMode(USART1);
71 LL_USART_Enable(USART1);
72 /* USER CODE BEGIN USART1_Init 2 */
73 LL_USART_EnableDMAReq_RX(USART1);
74 LL_DMA_EnableChannel(DMA1,LL_DMA_CHANNEL_3);
75 /* USER CODE END USART1_Init 2 */
76
77 }

数据处理:


if(LL_DMA_IsActiveFlag_TC3(DMA1))
{
LL_DMA_ClearFlag_GI3(DMA1);

LL_DMA_DisableChannel(DMA1,LL_DMA_CHANNEL_3);
LL_DMA_SetDataLength(DMA1,LL_DMA_CHANNEL_3,Sec_UART_MAX_LEN);
LL_DMA_EnableChannel(DMA1,LL_DMA_CHANNEL_3);
}

 

STM32F0使用LL库实现UART接收的更多相关文章

  1. STM32 硬件UART接收超时检测设置

    STM32 硬件UART接收超时检测设置 -----------------本文作者"智御电子",期待与电子爱好者交流学习.---------------- 应用场景 在uart应 ...

  2. STM32F0使用LL库实现Modbus通讯

    在本次项目中,限于空间要求我们选用了STM32F030F4作为控制芯片.这款MCU不但封装紧凑,而且自带的Flash空间也非常有限,所以我们选择了LL库实现.本篇将说明基于LL实现USART通讯. 1 ...

  3. STM32F0使用LL库实现MS5536C通讯

    在本次项目中,限于空间要求我们选用了STM32F030F4作为控制芯片.这款MCU不但封装紧凑,而且自带的Flash空间也非常有限,所以我们选择了LL库实现.在本文中我们说明一下,使用LL库实现MS5 ...

  4. 基于FPGA的Uart接收图像数据至VGA显示

    系统框图 前面我们设计了基于FPGA的静态图片显示,接下来我们来做做基于FPGA的动态图片显示,本实验内容为:由PC端上位机软件通过串口发送一幅图像数据至FPGA,FPGA内部将图像数据存储,最后扫描 ...

  5. STM32F0使用LL库实现PWM输出

    在本次项目中,限于空间要求我们选用了STM32F030F4作为控制芯片.这款MCU不但封装紧凑,而且自带的Flash空间也非常有限,所以我们选择了LL库实现.本文我们将说明如何通过LL库实现PWM信号 ...

  6. STM32F0使用LL库实现SHT70通讯

    在本次项目中,限于空间要求我们选用了STM32F030F4作为控制芯片.这款MCU不但封装紧凑,而且自带的Flash空间也非常有限,所以我们选择了LL库实现.本篇我们将基于LL库采用模拟I2C接口的方 ...

  7. STM32F0使用LL库实现DMA方式AD采集

    在本次项目中,限于空间要求我们选用了STM32F030F4作为控制芯片.这款MCU不但封装紧凑,而且自带的Flash空间也非常有限,所以我们选择了LL库实现.在本文中我们将介绍基于LL库的ADC的DM ...

  8. NIOS II下基于中断的UART接收和发送设计示例代码

    #include "sys/alt_stdio.h" #include "altera_avalon_uart_regs.h" #include "s ...

  9. 基于STM32之UART串口通信协议(三)接收

    一.前言 1.简介 回顾上一篇UART发送当中,已经讲解了如何实现UART的发送操作了,接下来这一篇将会继续讲解如何实现UART的接收操作. 2.UART简介 嵌入式开发中,UART串口通信协议是我们 ...

  10. 带FIFO的UART数据接收

    芯片手册 某个Cortex-M4芯片带有1个UART,支持Tx,Rx 的FIFO功能,而且可以通过寄存器配置FIFO的阈值,芯片的datasheet并不完善,没有说明RX的FIFO具体有几个级别,每隔 ...

随机推荐

  1. vue学习笔记:Vue生命周期

    概念 一个Vue 实例从开始创建.初始化数据.编译模板.挂载 DOM.渲染→更新→渲染.卸载等一系列过程,这就是 Vue 的生命周期.同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不 ...

  2. Educational Codeforces Round 137 (Rated for Div. 2) - E. FTL

    DP Problem - E - Codeforces 题意 有个 BOSS 有 \(H\;(1<=H<=5000)\) 血量,\(s\) 点防御 有两种武器可用攻击 BOSS,伤害分别为 ...

  3. ShareWAF 软件&云形态安装部署说明

    一.常用文件说明sharewaf.js:主程序daemon.js:主程序守护程序oem.js:OEM 定制文件developer.js:二次开发接口rules.js:自定义规则文件regexp.js: ...

  4. K8s集群安全机制

    安全机制说明 k8s作为一个分布式集群管理的工具,保证集群的安全性是其一个重要的任务.API Server是集群内部各个组件通信的中介,也是外部控制的入口,,所以K8s的安全机制就是围绕保护API S ...

  5. go 程序设计语言 命令行参数

    最近打算读一读 go程序设计语言这本书, 读语言类的书是一件十分头疼的事情, 因为读一本书就意味着,看着一堆钳子 锥子工具的图片, 概念背了一大堆,仍然不知道怎么用,还是要通过实践. 还是习惯任务驱动 ...

  6. 20192326杨沥凯 实验一《Linux基础与Java开发环境》实验报告

    20192326杨沥凯 2020-2021-1 <数据结构与面向对象程序设计>实验一报告 课程:<程序设计与数据结构> 班级: 1923 姓名: 杨沥凯 学号:20192326 ...

  7. js数字取整的方法

    parseInt(123.34)=123(保留整数) Math.ceil(123.34)=124(向上取整) Math.floor(123.34)=123(向下取整) Math.round(123.3 ...

  8. vs2019中添加rdlc的报表设计器

    在Visual studio 2019中,不会默认安装rdlc的报表设计器,所以需要自行添加. 1. 打开VS2019, 找到扩展-->管理扩展 2. 在扩展管理中,点击"联机&quo ...

  9. sql server 最近执行语句统计查询分析

    查询语句: select * from ( SELECT [RowNumber],DATEDIFF(second, StartTime, isnull(EndTime ,StartTime)) 执行时 ...

  10. 【个人笔记】CentOS 安装 Docker CE

    要在 CentOS 上开始使用 Docker CE,请确保 满足先决条件,然后 安装Docker. 1. 卸载旧版本 sudo yum remove docker docker-client dock ...