码迷,mamicode.com
首页 > 其他好文 > 详细

STM32F0使用LL库实现UART接收

时间:2019-12-03 20:13:43      阅读:541      评论:0      收藏:0      [点我收藏+]

标签:color   def   info   mda   数据处理   priority   direction   alter   amp   

初始化:

 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接收

标签:color   def   info   mda   数据处理   priority   direction   alter   amp   

原文地址:https://www.cnblogs.com/amw2738/p/STM32F0.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!