parent
7e99e2cc6c
commit
8376f0b5eb
@ -0,0 +1,52 @@ |
|||||||
|
/**
|
||||||
|
* TODO file description |
||||||
|
*/ |
||||||
|
|
||||||
|
#include <string.h> |
||||||
|
#include "uart_stdout.h" |
||||||
|
#include "FreeRTOS.h" |
||||||
|
#include "main.h" |
||||||
|
|
||||||
|
#define USE_CRITICAL 0 |
||||||
|
|
||||||
|
void stdout_putchar(char c) { |
||||||
|
#if USE_CRITICAL |
||||||
|
portENTER_CRITICAL(); |
||||||
|
#endif |
||||||
|
while (!LL_USART_IsActiveFlag_TXE(USART_DEBUG)) {} |
||||||
|
LL_USART_TransmitData8(USART_DEBUG, c); |
||||||
|
while (!LL_USART_IsActiveFlag_TC(USART_DEBUG)) {} |
||||||
|
#if USE_CRITICAL |
||||||
|
portEXIT_CRITICAL(); |
||||||
|
#endif |
||||||
|
} |
||||||
|
|
||||||
|
void stdout_write(const char *pcBuffer, const size_t iLength) { |
||||||
|
#if USE_CRITICAL |
||||||
|
portENTER_CRITICAL(); |
||||||
|
#endif |
||||||
|
while (!LL_USART_IsActiveFlag_TXE(USART_DEBUG)) {} |
||||||
|
int cnt = (int) iLength; |
||||||
|
while (cnt-- > 0) { |
||||||
|
char c = *pcBuffer++; |
||||||
|
LL_USART_TransmitData8(USART_DEBUG, c); |
||||||
|
while (!LL_USART_IsActiveFlag_TC(USART_DEBUG)) {} |
||||||
|
} |
||||||
|
#if USE_CRITICAL |
||||||
|
portEXIT_CRITICAL(); |
||||||
|
#endif |
||||||
|
} |
||||||
|
|
||||||
|
void stdout_puts(const char *pcBuffer) { |
||||||
|
stdout_write(pcBuffer, strlen(pcBuffer)); |
||||||
|
} |
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Retargets the C library printf function to the USART. |
||||||
|
* @param None |
||||||
|
* @retval None |
||||||
|
*/ |
||||||
|
int _write(int fd, const char *pcBuffer, const int iLength) { |
||||||
|
stdout_write(pcBuffer, iLength); |
||||||
|
return iLength; |
||||||
|
} |
@ -0,0 +1,8 @@ |
|||||||
|
/**
|
||||||
|
* TODO file description |
||||||
|
*/ |
||||||
|
|
||||||
|
#ifndef BLUEPILLTROUBA_UART_STDOUT_H |
||||||
|
#define BLUEPILLTROUBA_UART_STDOUT_H |
||||||
|
|
||||||
|
#endif //BLUEPILLTROUBA_UART_STDOUT_H
|
Loading…
Reference in new issue