31 #define TM_USART_H 250
202 #include "stm32f4xx.h"
203 #include "stm32f4xx_rcc.h"
204 #include "stm32f4xx_gpio.h"
205 #include "stm32f4xx_usart.h"
206 #include "attributes.h"
208 #include "tm_stm32f4_gpio.h"
211 #if defined (STM32F40_41xxx) || defined(STM32F446xx)
220 #if defined (STM32F427_437xx) || defined (STM32F429_439xx)
231 #if defined (STM32F401xx) || defined(STM32F411xE)
280 #ifndef USART_BUFFER_SIZE
281 #define USART_BUFFER_SIZE 32
285 #ifndef TM_USART1_BUFFER_SIZE
286 #define TM_USART1_BUFFER_SIZE USART_BUFFER_SIZE
288 #ifndef TM_USART2_BUFFER_SIZE
289 #define TM_USART2_BUFFER_SIZE USART_BUFFER_SIZE
291 #ifndef TM_USART3_BUFFER_SIZE
292 #define TM_USART3_BUFFER_SIZE USART_BUFFER_SIZE
294 #ifndef TM_UART4_BUFFER_SIZE
295 #define TM_UART4_BUFFER_SIZE USART_BUFFER_SIZE
297 #ifndef TM_UART5_BUFFER_SIZE
298 #define TM_UART5_BUFFER_SIZE USART_BUFFER_SIZE
300 #ifndef TM_USART6_BUFFER_SIZE
301 #define TM_USART6_BUFFER_SIZE USART_BUFFER_SIZE
303 #ifndef TM_UART7_BUFFER_SIZE
304 #define TM_UART7_BUFFER_SIZE USART_BUFFER_SIZE
306 #ifndef TM_UART8_BUFFER_SIZE
307 #define TM_UART8_BUFFER_SIZE USART_BUFFER_SIZE
311 #ifndef USART_NVIC_PRIORITY
312 #define USART_NVIC_PRIORITY 0x06
317 #ifndef TM_USART1_HARDWARE_FLOW_CONTROL
318 #define TM_USART1_HARDWARE_FLOW_CONTROL TM_USART_HardwareFlowControl_None
320 #ifndef TM_USART1_MODE
321 #define TM_USART1_MODE USART_Mode_Tx | USART_Mode_Rx
323 #ifndef TM_USART1_PARITY
324 #define TM_USART1_PARITY USART_Parity_No
326 #ifndef TM_USART1_STOP_BITS
327 #define TM_USART1_STOP_BITS USART_StopBits_1
329 #ifndef TM_USART1_WORD_LENGTH
330 #define TM_USART1_WORD_LENGTH USART_WordLength_8b
334 #ifndef TM_USART2_HARDWARE_FLOW_CONTROL
335 #define TM_USART2_HARDWARE_FLOW_CONTROL TM_USART_HardwareFlowControl_None
337 #ifndef TM_USART2_MODE
338 #define TM_USART2_MODE USART_Mode_Tx | USART_Mode_Rx
340 #ifndef TM_USART2_PARITY
341 #define TM_USART2_PARITY USART_Parity_No
343 #ifndef TM_USART2_STOP_BITS
344 #define TM_USART2_STOP_BITS USART_StopBits_1
346 #ifndef TM_USART2_WORD_LENGTH
347 #define TM_USART2_WORD_LENGTH USART_WordLength_8b
351 #ifndef TM_USART3_HARDWARE_FLOW_CONTROL
352 #define TM_USART3_HARDWARE_FLOW_CONTROL TM_USART_HardwareFlowControl_None
354 #ifndef TM_USART3_MODE
355 #define TM_USART3_MODE USART_Mode_Tx | USART_Mode_Rx
357 #ifndef TM_USART3_PARITY
358 #define TM_USART3_PARITY USART_Parity_No
360 #ifndef TM_USART3_STOP_BITS
361 #define TM_USART3_STOP_BITS USART_StopBits_1
363 #ifndef TM_USART3_WORD_LENGTH
364 #define TM_USART3_WORD_LENGTH USART_WordLength_8b
368 #ifndef TM_UART4_HARDWARE_FLOW_CONTROL
369 #define TM_UART4_HARDWARE_FLOW_CONTROL TM_USART_HardwareFlowControl_None
371 #ifndef TM_UART4_MODE
372 #define TM_UART4_MODE USART_Mode_Tx | USART_Mode_Rx
374 #ifndef TM_UART4_PARITY
375 #define TM_UART4_PARITY USART_Parity_No
377 #ifndef TM_UART4_STOP_BITS
378 #define TM_UART4_STOP_BITS USART_StopBits_1
380 #ifndef TM_UART4_WORD_LENGTH
381 #define TM_UART4_WORD_LENGTH USART_WordLength_8b
385 #ifndef TM_UART5_HARDWARE_FLOW_CONTROL
386 #define TM_UART5_HARDWARE_FLOW_CONTROL TM_USART_HardwareFlowControl_None
388 #ifndef TM_UART5_MODE
389 #define TM_UART5_MODE USART_Mode_Tx | USART_Mode_Rx
391 #ifndef TM_UART5_PARITY
392 #define TM_UART5_PARITY USART_Parity_No
394 #ifndef TM_UART5_STOP_BITS
395 #define TM_UART5_STOP_BITS USART_StopBits_1
397 #ifndef TM_UART5_WORD_LENGTH
398 #define TM_UART5_WORD_LENGTH USART_WordLength_8b
402 #ifndef TM_USART6_HARDWARE_FLOW_CONTROL
403 #define TM_USART6_HARDWARE_FLOW_CONTROL TM_USART_HardwareFlowControl_None
405 #ifndef TM_USART6_MODE
406 #define TM_USART6_MODE USART_Mode_Tx | USART_Mode_Rx
408 #ifndef TM_USART6_PARITY
409 #define TM_USART6_PARITY USART_Parity_No
411 #ifndef TM_USART6_STOP_BITS
412 #define TM_USART6_STOP_BITS USART_StopBits_1
414 #ifndef TM_USART6_WORD_LENGTH
415 #define TM_USART6_WORD_LENGTH USART_WordLength_8b
419 #ifndef TM_UART7_HARDWARE_FLOW_CONTROL
420 #define TM_UART7_HARDWARE_FLOW_CONTROL TM_USART_HardwareFlowControl_None
422 #ifndef TM_UART7_MODE
423 #define TM_UART7_MODE USART_Mode_Tx | USART_Mode_Rx
425 #ifndef TM_UART7_PARITY
426 #define TM_UART7_PARITY USART_Parity_No
428 #ifndef TM_UART7_STOP_BITS
429 #define TM_UART7_STOP_BITS USART_StopBits_1
431 #ifndef TM_UART7_WORD_LENGTH
432 #define TM_UART7_WORD_LENGTH USART_WordLength_8b
436 #ifndef TM_UART8_HARDWARE_FLOW_CONTROL
437 #define TM_UART8_HARDWARE_FLOW_CONTROL TM_USART_HardwareFlowControl_None
439 #ifndef TM_UART8_MODE
440 #define TM_UART8_MODE USART_Mode_Tx | USART_Mode_Rx
442 #ifndef TM_UART8_PARITY
443 #define TM_UART8_PARITY USART_Parity_No
445 #ifndef TM_UART8_STOP_BITS
446 #define TM_UART8_STOP_BITS USART_StopBits_1
448 #ifndef TM_UART8_WORD_LENGTH
449 #define TM_UART8_WORD_LENGTH USART_WordLength_8b
455 #define USART_WAIT(USARTx) do { while (!((USARTx)->SR & USART_FLAG_TXE)); } while (0)
460 #define USART_STRING_DELIMITER '\n'
500 static __INLINE
void TM_USART_Putc(USART_TypeDef* USARTx,
volatile char c) {
502 if ((USARTx->CR1 & USART_CR1_UE)) {
506 USARTx->DR = (uint16_t)(c & 0x01FF);
527 void TM_USART_Send(USART_TypeDef* USARTx, uint8_t* DataArray, uint16_t count);
549 uint16_t
TM_USART_Gets(USART_TypeDef* USARTx,
char* buffer, uint16_t bufsize);
Definition: tm_stm32f4_usart.h:250
__weak void TM_UART7_ReceiveHandler(uint8_t c)
Callback function for receive interrupt on UART7 in case you have enabled custom USART handler mode...
uint8_t TM_USART_FindCharacter(USART_TypeDef *USARTx, uint8_t c)
Checks if character c is available in internal buffer.
Definition: tm_stm32f4_usart.h:249
void TM_USART_InitCustomPinsCallback(USART_TypeDef *USARTx, uint16_t AlternateFunction)
Callback for custom pins initialization for USARTx.
__weak void TM_USART2_ReceiveHandler(uint8_t c)
Callback function for receive interrupt on USART2 in case you have enabled custom USART handler mode...
__weak void TM_USART1_ReceiveHandler(uint8_t c)
Callback function for receive interrupt on USART1 in case you have enabled custom USART handler mode...
void TM_USART_Send(USART_TypeDef *USARTx, uint8_t *DataArray, uint16_t count)
Sends data array to USART port.
uint8_t TM_USART_BufferFull(USART_TypeDef *USARTx)
Checks if internal USARTx buffer is full.
__weak void TM_UART4_ReceiveHandler(uint8_t c)
Callback function for receive interrupt on UART4 in case you have enabled custom USART handler mode...
#define USART_WAIT(USARTx)
Wait till USART finishes transmission.
Definition: tm_stm32f4_usart.h:455
Definition: tm_stm32f4_usart.h:259
TM_USART_PinsPack_t
USART PinsPack enumeration to select pins combination for USART.
Definition: tm_stm32f4_usart.h:247
__weak void TM_UART8_ReceiveHandler(uint8_t c)
Callback function for receive interrupt on UART8 in case you have enabled custom USART handler mode...
Definition: tm_stm32f4_usart.h:262
uint16_t TM_USART_Gets(USART_TypeDef *USARTx, char *buffer, uint16_t bufsize)
Gets string from USART.
Definition: tm_stm32f4_usart.h:261
Definition: tm_stm32f4_usart.h:260
__weak void TM_USART6_ReceiveHandler(uint8_t c)
Callback function for receive interrupt on USART6 in case you have enabled custom USART handler mode...
uint8_t TM_USART_BufferEmpty(USART_TypeDef *USARTx)
Checks if internal USARTx buffer is empty.
void TM_USART_InitWithFlowControl(USART_TypeDef *USARTx, TM_USART_PinsPack_t pinspack, uint32_t baudrate, TM_USART_HardwareFlowControl_t FlowControl)
Initializes USARTx peripheral and corresponding pins with custom hardware flow control mode...
void TM_USART_ClearBuffer(USART_TypeDef *USARTx)
Clears internal USART buffer.
Definition: tm_stm32f4_usart.h:251
__weak void TM_UART5_ReceiveHandler(uint8_t c)
Callback function for receive interrupt on UART5 in case you have enabled custom USART handler mode...
Definition: tm_stm32f4_usart.h:248
static __INLINE void TM_USART_Putc(USART_TypeDef *USARTx, volatile char c)
Puts character to USART port.
Definition: tm_stm32f4_usart.h:500
void TM_USART_Init(USART_TypeDef *USARTx, TM_USART_PinsPack_t pinspack, uint32_t baudrate)
Initializes USARTx peripheral and corresponding pins.
TM_USART_HardwareFlowControl_t
USART Hardware flow control selection.
Definition: tm_stm32f4_usart.h:258
uint8_t TM_USART_Getc(USART_TypeDef *USARTx)
Gets character from internal USART buffer.
__weak void TM_USART3_ReceiveHandler(uint8_t c)
Callback function for receive interrupt on USART3 in case you have enabled custom USART handler mode...
void TM_USART_Puts(USART_TypeDef *USARTx, char *str)
Puts string to USART port.
void TM_USART_SetCustomStringEndCharacter(USART_TypeDef *USARTx, uint8_t Character)
Sets custom character for TM_USART_Gets() function to detect when string ends.