VSF Documented
sthal_uart.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2024 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * You may obtain a copy of the License at *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
10 * Unless required by applicable law or agreed to in writing, software *
11 * distributed under the License is distributed on an "AS IS" BASIS, *
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18#ifndef __ST_HAL_UART_H__
19#define __ST_HAL_UART_H__
20
21#ifdef __cplusplus
22extern "C" {
23#endif
24
25#if VSF_HAL_USE_USART == ENABLED && defined(HAL_UART_MODULE_ENABLED)
26
27/*============================ INCLUDES ======================================*/
28
29# include "sthal_uart_base.h"
30
31/*============================ MACROS ========================================*/
32
33# define HAL_UART_ERROR_NONE 0x00000000U
34# define HAL_UART_ERROR_PE 0x00000001U
35# define HAL_UART_ERROR_NE 0x00000002U
36# define HAL_UART_ERROR_FE 0x00000004U
37# define HAL_UART_ERROR_ORE 0x00000008U
38# define HAL_UART_ERROR_DMA 0x00000010U
39# if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
40# define HAL_UART_ERROR_INVALID_CALLBACK 0x00000020U
41# endif
42
43# define HAL_UART_RXEVENT_TC (0x00000000U)
44# define HAL_UART_RXEVENT_HT (0x00000001U)
45# define HAL_UART_RXEVENT_IDLE (0x00000002U)
46
47# define HAL_UART_RECEPTION_STANDARD (0x00000000U)
48# define HAL_UART_RECEPTION_TOIDLE (0x00000001U)
49
50# define UART_WORDLENGTH_8B VSF_USART_8_BIT_LENGTH
51# define UART_WORDLENGTH_9B VSF_USART_9_BIT_LENGTH
52
53# define UART_STOPBITS_1 VSF_USART_1_STOPBIT
54# define UART_STOPBITS_2 VSF_USART_2_STOPBIT
55
56# define UART_PARITY_NONE VSF_USART_NO_PARITY
57# define UART_PARITY_EVEN VSF_USART_EVEN_PARITY
58# define UART_PARITY_ODD VSF_USART_ODD_PARITY
59
60# define UART_HWCONTROL_NONE VSF_USART_NO_HWCONTROL
61# define UART_HWCONTROL_RTS VSF_USART_RTS_HWCONTROL
62# define UART_HWCONTROL_CTS VSF_USART_CTS_HWCONTROL
63# define UART_HWCONTROL_RTS_CTS VSF_USART_RTS_CTS_HWCONTROL
64
65# define UART_MODE_RX (VSF_USART_TX_ENABLE | VSF_USART_RX_DISABLE)
66# define UART_MODE_TX (VSF_USART_RX_ENABLE | VSF_USART_TX_DISABLE)
67# define UART_MODE_TX_RX (VSF_USART_TX_ENABLE | VSF_USART_RX_ENABLE)
68
69# if defined(VSF_USART_LINE_BREAK_DETECT_LENGTH_MASK)
70# if define VSF_USART_LINE_BREAK_DETECT_LENGTH_10B
71# define UART_LINBREAKDETECTLENGTH_10B \
72 VSF_USART_LINE_BREAK_DETECT_LENGTH_10B
73# endif
74# if define VSF_USART_LINE_BREAK_DETECT_LENGTH_11B
75# define UART_LINBREAKDETECTLENGTH_11B \
76 VSF_USART_LINE_BREAK_DETECT_LENGTH_11B
77# endif
78# endif
79
80# if defined(VSF_USART_OVER_SAMPLING_MASK)
81# if define VSF_USART_OVER_SAMPLING_16
82# define UART_OVERSAMPLING_16 VSF_USART_OVER_SAMPLING_16
83# endif
84# if define VSF_USART_OVER_SAMPLING_8
85# define UART_OVERSAMPLING_8 VSF_USART_OVER_SAMPLING_8
86# endif
87# endif
88
89# if defined(VSF_USART_WAKEUP_METHOD_MASK)
90# if define VSF_USART_WAKEUP_METHOD_IDLE_LINE
91# define UART_WAKEUPMETHOD_IDLELINE VSF_USART_WAKEUP_METHOD_IDLE_LINE
92# endif
93# if define VSF_USART_WAKEUP_METHOD_IDLE_ADDRESS_MARK
94# define UART_WAKEUPMETHOD_ADDRESSMARK \
95 VSF_USART_WAKEUP_METHOD_IDLE_ADDRESS_MARK
96# endif
97# endif
98
99// Unsupport Features
100# ifndef UART_LINBREAKDETECTLENGTH_10B
101# define UART_LINBREAKDETECTLENGTH_10B 0
102# endif
103
104# ifndef UART_LINBREAKDETECTLENGTH_11B
105# define UART_LINBREAKDETECTLENGTH_11B 0
106# endif
107
108# ifndef UART_OVERSAMPLING_16
109# define UART_OVERSAMPLING_16 0
110# endif
111
112# ifndef UART_OVERSAMPLING_8
113# define UART_OVERSAMPLING_8 0
114# endif
115
116# ifndef UART_WAKEUPMETHOD_IDLELINE
117# define UART_WAKEUPMETHOD_IDLELINE 0
118# endif
119
120# ifndef UART_WAKEUPMETHOD_ADDRESSMARK
121# define UART_WAKEUPMETHOD_ADDRESSMARK 0
122# endif
123
124/*============================ MACROFIED FUNCTIONS ===========================*/
125/*============================ TYPES =========================================*/
126
127typedef enum {
128 HAL_UART_STATE_RESET = __HAL_UART_STATE_RESET,
129 HAL_UART_STATE_READY = __HAL_UART_STATE_READY,
130 HAL_UART_STATE_BUSY = __HAL_UART_STATE_BUSY,
131 HAL_UART_STATE_BUSY_TX = __HAL_UART_STATE_BUSY_TX,
132 HAL_UART_STATE_BUSY_RX = __HAL_UART_STATE_BUSY_RX,
133 HAL_UART_STATE_BUSY_TX_RX = __HAL_UART_STATE_BUSY_TX_RX,
134 HAL_UART_STATE_TIMEOUT = __HAL_UART_STATE_TIMEOUT,
135 HAL_UART_STATE_ERROR = __HAL_UART_STATE_ERROR,
136} HAL_UART_StateTypeDef;
137
138# if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
139typedef enum {
140 HAL_UART_TX_HALFCOMPLETE_CB_ID = __HAL_UART_TX_HALFCOMPLETE_CB_ID,
141 HAL_UART_TX_COMPLETE_CB_ID = __HAL_UART_TX_COMPLETE_CB_ID,
142 HAL_UART_RX_HALFCOMPLETE_CB_ID = __HAL_UART_RX_HALFCOMPLETE_CB_ID,
143 HAL_UART_RX_COMPLETE_CB_ID = __HAL_UART_RX_COMPLETE_CB_ID,
144 HAL_UART_ERROR_CB_ID = __HAL_UART_ERROR_CB_ID,
145 HAL_UART_ABORT_COMPLETE_CB_ID = __HAL_UART_ABORT_COMPLETE_CB_ID,
146 HAL_UART_ABORT_TRANSMIT_COMPLETE_CB_ID =
147 __HAL_UART_ABORT_TRANSMIT_COMPLETE_CB_ID,
148 HAL_UART_ABORT_RECEIVE_COMPLETE_CB_ID =
149 __HAL_UART_ABORT_RECEIVE_COMPLETE_CB_ID,
150 HAL_UART_WAKEUP_CB_ID = __HAL_UART_WAKEUP_CB_ID,
151 HAL_UART_MSPINIT_CB_ID = __HAL_UART_MSPINIT_CB_ID,
152 HAL_UART_MSPDEINIT_CB_ID = __HAL_UART_MSPDEINIT_CB_ID,
153} HAL_UART_CallbackIDTypeDef;
154# endif
155
156typedef __UART_TypeDef UART_TypeDef;
157typedef __UART_InitTypeDef UART_InitTypeDef;
158typedef struct __UART_HandleTypeDef UART_HandleTypeDef;
159typedef void (*pUART_CallbackTypeDef)(UART_HandleTypeDef *huart);
160typedef void (*pUART_RxEventCallbackTypeDef)(UART_HandleTypeDef *huart,
161 uint16_t Pos);
162
163/*============================ GLOBAL VARIABLES ==============================*/
164/*============================ PROTOTYPES ====================================*/
165
166HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart);
167HAL_StatusTypeDef HAL_HalfDuplex_Init(UART_HandleTypeDef *huart);
168HAL_StatusTypeDef HAL_LIN_Init(UART_HandleTypeDef *huart,
169 uint32_t BreakDetectLength);
170HAL_StatusTypeDef HAL_MultiProcessor_Init(UART_HandleTypeDef *huart,
171 uint8_t Address,
172 uint32_t WakeUpMethod);
173HAL_StatusTypeDef HAL_UART_DeInit(UART_HandleTypeDef *huart);
174void HAL_UART_MspInit(UART_HandleTypeDef *huart);
175void HAL_UART_MspDeInit(UART_HandleTypeDef *huart);
176
177# if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
178HAL_StatusTypeDef HAL_UART_RegisterCallback(
179 UART_HandleTypeDef *huart, HAL_UART_CallbackIDTypeDef CallbackID,
180 pUART_CallbackTypeDef pCallback);
181HAL_StatusTypeDef HAL_UART_UnRegisterCallback(
182 UART_HandleTypeDef *huart, HAL_UART_CallbackIDTypeDef CallbackID);
183
184HAL_StatusTypeDef HAL_UART_RegisterRxEventCallback(
185 UART_HandleTypeDef *huart, pUART_RxEventCallbackTypeDef pCallback);
186HAL_StatusTypeDef HAL_UART_UnRegisterRxEventCallback(UART_HandleTypeDef *huart);
187# endif
188
189HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart,
190 const uint8_t *pData, uint16_t Size,
191 uint32_t Timeout);
192HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData,
193 uint16_t Size, uint32_t Timeout);
194HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart,
195 const uint8_t *pData, uint16_t Size);
196HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData,
197 uint16_t Size);
198HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart,
199 const uint8_t *pData, uint16_t Size);
200HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart,
201 uint8_t *pData, uint16_t Size);
202HAL_StatusTypeDef HAL_UART_DMAPause(UART_HandleTypeDef *huart);
203HAL_StatusTypeDef HAL_UART_DMAResume(UART_HandleTypeDef *huart);
204HAL_StatusTypeDef HAL_UART_DMAStop(UART_HandleTypeDef *huart);
205
206HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle(UART_HandleTypeDef *huart,
207 uint8_t *pData, uint16_t Size,
208 uint16_t *RxLen, uint32_t Timeout);
209HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle_IT(UART_HandleTypeDef *huart,
210 uint8_t *pData, uint16_t Size);
211HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle_DMA(UART_HandleTypeDef *huart,
212 uint8_t *pData, uint16_t Size);
213
215 UART_HandleTypeDef *huart);
216
217HAL_StatusTypeDef HAL_UART_Abort(UART_HandleTypeDef *huart);
218HAL_StatusTypeDef HAL_UART_AbortTransmit(UART_HandleTypeDef *huart);
219HAL_StatusTypeDef HAL_UART_AbortReceive(UART_HandleTypeDef *huart);
220HAL_StatusTypeDef HAL_UART_Abort_IT(UART_HandleTypeDef *huart);
221HAL_StatusTypeDef HAL_UART_AbortTransmit_IT(UART_HandleTypeDef *huart);
222HAL_StatusTypeDef HAL_UART_AbortReceive_IT(UART_HandleTypeDef *huart);
223
224void HAL_UART_IRQHandler(UART_HandleTypeDef *huart);
225void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart);
226void HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart);
227void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);
228void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart);
229void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart);
230void HAL_UART_AbortCpltCallback(UART_HandleTypeDef *huart);
231void HAL_UART_AbortTransmitCpltCallback(UART_HandleTypeDef *huart);
232void HAL_UART_AbortReceiveCpltCallback(UART_HandleTypeDef *huart);
233
234void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size);
235void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart);
236
237HAL_StatusTypeDef HAL_LIN_SendBreak(UART_HandleTypeDef *huart);
238HAL_StatusTypeDef HAL_MultiProcessor_EnterMuteMode(UART_HandleTypeDef *huart);
239HAL_StatusTypeDef HAL_MultiProcessor_ExitMuteMode(UART_HandleTypeDef *huart);
240HAL_StatusTypeDef HAL_HalfDuplex_EnableTransmitter(UART_HandleTypeDef *huart);
241HAL_StatusTypeDef HAL_HalfDuplex_EnableReceiver(UART_HandleTypeDef *huart);
242
243HAL_UART_StateTypeDef HAL_UART_GetState(const UART_HandleTypeDef *huart);
244uint32_t HAL_UART_GetError(const UART_HandleTypeDef *huart);
245
246HAL_StatusTypeDef UART_Start_Receive_IT(UART_HandleTypeDef *huart,
247 uint8_t *pData, uint16_t Size);
248HAL_StatusTypeDef UART_Start_Receive_DMA(UART_HandleTypeDef *huart,
249 uint8_t *pData, uint16_t Size);
250
251#endif
252
253#ifdef __cplusplus
254}
255#endif
256
257#endif /* __ST_HAL_USART_H__ */
unsigned short uint16_t
Definition stdint.h:7
unsigned uint32_t
Definition stdint.h:9
unsigned char uint8_t
Definition stdint.h:5
HAL_StatusTypeDef
Definition sthal_def.h:65
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout)
Definition sthal_uart.c:232
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
Definition sthal_uart.c:132
void HAL_UART_MspInit(UART_HandleTypeDef *huart)
Definition sthal_uart.c:175
void HAL_UART_AbortReceiveCpltCallback(UART_HandleTypeDef *huart)
Definition sthal_uart.c:150
HAL_StatusTypeDef HAL_UART_AbortTransmit_IT(UART_HandleTypeDef *huart)
Definition sthal_uart.c:339
void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart)
Definition sthal_uart.c:126
HAL_StatusTypeDef HAL_LIN_Init(UART_HandleTypeDef *huart, uint32_t BreakDetectLength)
Definition sthal_uart.c:613
HAL_StatusTypeDef HAL_UART_Abort(UART_HandleTypeDef *huart)
Definition sthal_uart.c:307
HAL_StatusTypeDef HAL_UART_Abort_IT(UART_HandleTypeDef *huart)
Definition sthal_uart.c:331
HAL_UART_RxEventTypeTypeDef HAL_UARTEx_GetRxEventType(UART_HandleTypeDef *huart)
Definition sthal_uart.c:360
HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint16_t *RxLen, uint32_t Timeout)
Definition sthal_uart.c:569
HAL_StatusTypeDef HAL_HalfDuplex_EnableReceiver(UART_HandleTypeDef *huart)
Definition sthal_uart.c:551
void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart)
Definition sthal_uart.c:169
void HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart)
Definition sthal_uart.c:114
HAL_StatusTypeDef HAL_HalfDuplex_EnableTransmitter(UART_HandleTypeDef *huart)
Definition sthal_uart.c:543
HAL_StatusTypeDef HAL_UART_AbortTransmit(UART_HandleTypeDef *huart)
Definition sthal_uart.c:315
HAL_StatusTypeDef HAL_MultiProcessor_EnterMuteMode(UART_HandleTypeDef *huart)
Definition sthal_uart.c:627
HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size)
Definition sthal_uart.c:255
void HAL_UART_MspDeInit(UART_HandleTypeDef *huart)
Definition sthal_uart.c:181
uint32_t HAL_UART_GetError(const UART_HandleTypeDef *huart)
Definition sthal_uart.c:564
HAL_StatusTypeDef HAL_MultiProcessor_ExitMuteMode(UART_HandleTypeDef *huart)
Definition sthal_uart.c:635
HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size)
Definition sthal_uart.c:277
HAL_StatusTypeDef HAL_UART_DMAPause(UART_HandleTypeDef *huart)
Definition sthal_uart.c:597
HAL_StatusTypeDef HAL_UART_DeInit(UART_HandleTypeDef *huart)
Definition sthal_uart.c:224
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
Definition sthal_uart.c:156
HAL_StatusTypeDef HAL_HalfDuplex_Init(UART_HandleTypeDef *huart)
Definition sthal_uart.c:200
HAL_StatusTypeDef HAL_UART_AbortReceive(UART_HandleTypeDef *huart)
Definition sthal_uart.c:323
void HAL_UART_IRQHandler(UART_HandleTypeDef *huart)
Definition sthal_uart.c:368
HAL_StatusTypeDef HAL_UART_AbortReceive_IT(UART_HandleTypeDef *huart)
Definition sthal_uart.c:347
HAL_StatusTypeDef HAL_MultiProcessor_Init(UART_HandleTypeDef *huart, uint8_t Address, uint32_t WakeUpMethod)
Definition sthal_uart.c:209
HAL_StatusTypeDef HAL_UART_DMAStop(UART_HandleTypeDef *huart)
Definition sthal_uart.c:299
HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Definition sthal_uart.c:244
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
Definition sthal_uart.c:108
HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart)
Definition sthal_uart.c:186
void HAL_UART_AbortCpltCallback(UART_HandleTypeDef *huart)
Definition sthal_uart.c:138
void HAL_UART_AbortTransmitCpltCallback(UART_HandleTypeDef *huart)
Definition sthal_uart.c:144
HAL_UART_StateTypeDef HAL_UART_GetState(const UART_HandleTypeDef *huart)
Definition sthal_uart.c:559
HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
Definition sthal_uart.c:288
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
Definition sthal_uart.c:266
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
Definition sthal_uart.c:120
HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
Definition sthal_uart.c:579
HAL_StatusTypeDef HAL_UART_DMAResume(UART_HandleTypeDef *huart)
Definition sthal_uart.c:605
HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
Definition sthal_uart.c:588
HAL_StatusTypeDef HAL_LIN_SendBreak(UART_HandleTypeDef *huart)
Definition sthal_uart.c:355
@ __HAL_UART_STATE_ERROR
Definition sthal_uart_base.h:73
@ __HAL_UART_STATE_READY
Definition sthal_uart_base.h:67
@ __HAL_UART_STATE_BUSY_TX
Definition sthal_uart_base.h:69
@ __HAL_UART_STATE_BUSY_TX_RX
Definition sthal_uart_base.h:71
@ __HAL_UART_STATE_RESET
Definition sthal_uart_base.h:66
@ __HAL_UART_STATE_TIMEOUT
Definition sthal_uart_base.h:72
@ __HAL_UART_STATE_BUSY
Definition sthal_uart_base.h:68
@ __HAL_UART_STATE_BUSY_RX
Definition sthal_uart_base.h:70
uint32_t HAL_UART_RxEventTypeTypeDef
Definition sthal_uart_base.h:78
Definition sthal_uart_base.h:80
Definition sthal_uart_base.h:39
Definition vsf_template_usart.h:661
struct @750 Size