初始化:

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

数据处理:

  1.  

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);
}

  1.  

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. 【狂神说】SpringMVC笔记

    1.回顾MVC ssm:mybatis+Spring+SpringMVC MVC三层架构 ssm框架:研究官方文档,锻炼自学能力,锻炼项目能力 SpringMVC+Vue+SpringBoot+Spr ...

  2. JS的有关递归的知识点(数据无限级联的实现)

    所用测试数据: 1 const data = [ 2 { 3 "area_id": 5, 4 "name": "广东省", 5 " ...

  3. js中常用Math对象

    js中常用Math对象 Math.round()四舍五入 Math.ceil() ->ceil 天花板--->向上取整 Math.floor() 向下取整 Math.floor(-11.1 ...

  4. doskey: windows版 Alias

    1.编辑doskey.bat文件 2.打开注册表寻找.HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor (自行百度) 3.添加d ...

  5. 使用vault配置加密

    简介 在使用ansible的过程中,不可避免的会存储一些敏感信息,比如在变量文件中存储帐号密码信息等. ansible通过ansible-vault命令行工具来提供对敏感文件的加密和解密. ansib ...

  6. Wordpress指定关键词手动添加链接

    方法:网站后台->外观->编辑->找到functions.php文件 wp-content/themes/当前外观/functions.php 在当前外观的functions.php ...

  7. 安全测试-WEB安全渗透测试基础知识(一)

     1.1. Web技术演化  1.1.1. 静态页面 在互联网最初开始的时候,Web网站的主要内容是静态的,由文字和图片组成,制作和表现形式也是以表格为主.当时的用户行为也非常简单,仅仅是浏览网页. ...

  8. 【微信公众号】记一次微信活动微信公众号分享没有LOGO的解决心路历程

    微信类的活动测过好几次了,以前的开发从来没有出过纰漏,这次也以为很简单.结果一个"分享后没有LOGO的问题",前端开发陆陆续续花了一周时间都不能解决,老是找后端和微信公众号配置问题 ...

  9. iOS开发之权限申请说明key

    我们申请不同的权限需要对应的key,在info.plist内加上对用户的提示语 麦克风权限 NSMicrophoneUsageDescription 相机权限 NSCameraUsageDescrip ...

  10. Burp学院-信息泄露

    1.Information disclosure in error messages错误消息中的信息泄露 GET /product?productId=1 发送到Repeater. 修改product ...