source: trunk/firmware_v3/Core/Src/usart.c

Last change on this file was 41, checked in by f.jahn, 8 days ago

V3 Version soweit fertig. Relais ansteuerung, modbus, temperatursensor ist implementiert
Commit vor Änderung auf neuen Controller mit mehr Speicher

File size: 5.5 KB
Line 
1/* USER CODE BEGIN Header */
2/**
3 ******************************************************************************
4 * @file usart.c
5 * @brief This file provides code for the configuration
6 * of the USART instances.
7 ******************************************************************************
8 * @attention
9 *
10 * Copyright (c) 2025 STMicroelectronics.
11 * All rights reserved.
12 *
13 * This software is licensed under terms that can be found in the LICENSE file
14 * in the root directory of this software component.
15 * If no LICENSE file comes with this software, it is provided AS-IS.
16 *
17 ******************************************************************************
18 */
19/* USER CODE END Header */
20/* Includes ------------------------------------------------------------------*/
21#include "usart.h"
22
23/* USER CODE BEGIN 0 */
24
25/* USER CODE END 0 */
26
27UART_HandleTypeDef huart1;
28DMA_HandleTypeDef hdma_usart1_rx;
29DMA_HandleTypeDef hdma_usart1_tx;
30
31/* USART1 init function */
32
33void MX_USART1_UART_Init(void)
34{
35
36 /* USER CODE BEGIN USART1_Init 0 */
37
38 /* USER CODE END USART1_Init 0 */
39
40 /* USER CODE BEGIN USART1_Init 1 */
41
42 /* USER CODE END USART1_Init 1 */
43 huart1.Instance = USART1;
44 huart1.Init.BaudRate = 19200;
45 huart1.Init.WordLength = UART_WORDLENGTH_9B;
46 huart1.Init.StopBits = UART_STOPBITS_1;
47 huart1.Init.Parity = UART_PARITY_EVEN;
48 huart1.Init.Mode = UART_MODE_TX_RX;
49 huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
50 huart1.Init.OverSampling = UART_OVERSAMPLING_16;
51 huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
52 huart1.Init.ClockPrescaler = UART_PRESCALER_DIV1;
53 huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
54 if (HAL_UART_Init(&huart1) != HAL_OK)
55 {
56 Error_Handler();
57 }
58 if (HAL_UARTEx_SetTxFifoThreshold(&huart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
59 {
60 Error_Handler();
61 }
62 if (HAL_UARTEx_SetRxFifoThreshold(&huart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
63 {
64 Error_Handler();
65 }
66 if (HAL_UARTEx_DisableFifoMode(&huart1) != HAL_OK)
67 {
68 Error_Handler();
69 }
70 /* USER CODE BEGIN USART1_Init 2 */
71
72 /* USER CODE END USART1_Init 2 */
73
74}
75
76void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
77{
78
79 GPIO_InitTypeDef GPIO_InitStruct = {0};
80 RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
81 if(uartHandle->Instance==USART1)
82 {
83 /* USER CODE BEGIN USART1_MspInit 0 */
84
85 /* USER CODE END USART1_MspInit 0 */
86
87 /** Initializes the peripherals clocks
88 */
89 PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1;
90 PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK1;
91 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
92 {
93 Error_Handler();
94 }
95
96 /* USART1 clock enable */
97 __HAL_RCC_USART1_CLK_ENABLE();
98
99 __HAL_RCC_GPIOA_CLK_ENABLE();
100 /**USART1 GPIO Configuration
101 PA9 ------> USART1_TX
102 PA10 ------> USART1_RX
103 */
104 GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;
105 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
106 GPIO_InitStruct.Pull = GPIO_NOPULL;
107 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
108 GPIO_InitStruct.Alternate = GPIO_AF1_USART1;
109 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
110
111 /* USART1 DMA Init */
112 /* USART1_RX Init */
113 hdma_usart1_rx.Instance = DMA1_Channel2;
114 hdma_usart1_rx.Init.Request = DMA_REQUEST_USART1_RX;
115 hdma_usart1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
116 hdma_usart1_rx.Init.PeriphInc = DMA_PINC_DISABLE;
117 hdma_usart1_rx.Init.MemInc = DMA_MINC_ENABLE;
118 hdma_usart1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
119 hdma_usart1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
120 hdma_usart1_rx.Init.Mode = DMA_NORMAL;
121 hdma_usart1_rx.Init.Priority = DMA_PRIORITY_LOW;
122 if (HAL_DMA_Init(&hdma_usart1_rx) != HAL_OK)
123 {
124 Error_Handler();
125 }
126
127 __HAL_LINKDMA(uartHandle,hdmarx,hdma_usart1_rx);
128
129 /* USART1_TX Init */
130 hdma_usart1_tx.Instance = DMA1_Channel3;
131 hdma_usart1_tx.Init.Request = DMA_REQUEST_USART1_TX;
132 hdma_usart1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
133 hdma_usart1_tx.Init.PeriphInc = DMA_PINC_DISABLE;
134 hdma_usart1_tx.Init.MemInc = DMA_MINC_ENABLE;
135 hdma_usart1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
136 hdma_usart1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
137 hdma_usart1_tx.Init.Mode = DMA_NORMAL;
138 hdma_usart1_tx.Init.Priority = DMA_PRIORITY_LOW;
139 if (HAL_DMA_Init(&hdma_usart1_tx) != HAL_OK)
140 {
141 Error_Handler();
142 }
143
144 __HAL_LINKDMA(uartHandle,hdmatx,hdma_usart1_tx);
145
146 /* USART1 interrupt Init */
147 HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
148 HAL_NVIC_EnableIRQ(USART1_IRQn);
149 /* USER CODE BEGIN USART1_MspInit 1 */
150
151 /* USER CODE END USART1_MspInit 1 */
152 }
153}
154
155void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
156{
157
158 if(uartHandle->Instance==USART1)
159 {
160 /* USER CODE BEGIN USART1_MspDeInit 0 */
161
162 /* USER CODE END USART1_MspDeInit 0 */
163 /* Peripheral clock disable */
164 __HAL_RCC_USART1_CLK_DISABLE();
165
166 /**USART1 GPIO Configuration
167 PA9 ------> USART1_TX
168 PA10 ------> USART1_RX
169 */
170 HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10);
171
172 /* USART1 DMA DeInit */
173 HAL_DMA_DeInit(uartHandle->hdmarx);
174 HAL_DMA_DeInit(uartHandle->hdmatx);
175
176 /* USART1 interrupt Deinit */
177 HAL_NVIC_DisableIRQ(USART1_IRQn);
178 /* USER CODE BEGIN USART1_MspDeInit 1 */
179
180 /* USER CODE END USART1_MspDeInit 1 */
181 }
182}
183
184/* USER CODE BEGIN 1 */
185
186/* USER CODE END 1 */
187
Note: See TracBrowser for help on using the repository browser.