mirror of
https://github.com/IcedRooibos/py32f0-template.git
synced 2025-10-28 16:32:05 -07:00
159 lines
3.3 KiB
C
159 lines
3.3 KiB
C
#include <sys/stat.h>
|
|
#include <unistd.h>
|
|
#include <errno.h>
|
|
#include "py32f0xx_bsp_printf.h"
|
|
|
|
#ifdef HAL_UART_MODULE_ENABLED
|
|
/**
|
|
* @brief DEBUG_USART GPIO Config,Mode Config,115200 8-N-1
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
void BSP_USART_Config(void)
|
|
{
|
|
GPIO_InitTypeDef GPIO_InitStruct;
|
|
|
|
DEBUG_USART_CLK_ENABLE();
|
|
|
|
DebugUartHandle.Instance = DEBUG_USART;
|
|
|
|
DebugUartHandle.Init.BaudRate = DEBUG_USART_BAUDRATE;
|
|
DebugUartHandle.Init.WordLength = UART_WORDLENGTH_8B;
|
|
DebugUartHandle.Init.StopBits = UART_STOPBITS_1;
|
|
DebugUartHandle.Init.Parity = UART_PARITY_NONE;
|
|
DebugUartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
|
|
DebugUartHandle.Init.Mode = UART_MODE_TX_RX;
|
|
|
|
HAL_UART_Init(&DebugUartHandle);
|
|
|
|
DEBUG_USART_RX_GPIO_CLK_ENABLE();
|
|
DEBUG_USART_TX_GPIO_CLK_ENABLE();
|
|
|
|
/**USART GPIO Configuration
|
|
PA2 ------> USART2_TX
|
|
PA3 ------> USART2_RX
|
|
*/
|
|
GPIO_InitStruct.Pin = DEBUG_USART_TX_PIN;
|
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
|
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
|
GPIO_InitStruct.Alternate = DEBUG_USART_TX_AF;
|
|
HAL_GPIO_Init(DEBUG_USART_TX_GPIO_PORT, &GPIO_InitStruct);
|
|
|
|
GPIO_InitStruct.Pin = DEBUG_USART_RX_PIN;
|
|
GPIO_InitStruct.Alternate = DEBUG_USART_RX_AF;
|
|
|
|
HAL_GPIO_Init(DEBUG_USART_RX_GPIO_PORT, &GPIO_InitStruct);
|
|
|
|
/* ENABLE NVIC */
|
|
HAL_NVIC_SetPriority(DEBUG_USART_IRQ,0,1);
|
|
HAL_NVIC_EnableIRQ(DEBUG_USART_IRQ );
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
#if defined (__GNUC__) && !defined (__clang__)
|
|
#define GETCHAR_PROTOTYPE int __io_getchar (void)
|
|
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
|
|
#else
|
|
#define GETCHAR_PROTOTYPE int fgetc(FILE * f)
|
|
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
|
|
#endif
|
|
|
|
/**
|
|
* @brief retargets the c library printf function to the usart.
|
|
* @param none
|
|
* @retval none
|
|
*/
|
|
PUTCHAR_PROTOTYPE
|
|
{
|
|
HAL_UART_Transmit(&DebugUartHandle, (uint8_t *)&ch, 1, 1000);
|
|
return (ch);
|
|
}
|
|
|
|
GETCHAR_PROTOTYPE
|
|
{
|
|
int ch;
|
|
HAL_UART_Receive(&DebugUartHandle, (uint8_t *)&ch, 1, 1000);
|
|
return (ch);
|
|
}
|
|
|
|
#if defined (__GNUC__) && !defined (__clang__)
|
|
__attribute__((weak)) int _write(int file, char *ptr, int len)
|
|
{
|
|
(void)file;
|
|
int DataIdx;
|
|
for (DataIdx = 0; DataIdx < len; DataIdx++)
|
|
{
|
|
__io_putchar(*ptr++);
|
|
}
|
|
return len;
|
|
}
|
|
#endif
|
|
|
|
__attribute__((weak)) int _read(int file, char *ptr, int len)
|
|
{
|
|
(void)file;
|
|
int DataIdx;
|
|
for (DataIdx = 0; DataIdx < len; DataIdx++)
|
|
{
|
|
*ptr++ = __io_getchar();
|
|
}
|
|
return len;
|
|
}
|
|
|
|
__attribute__((weak)) int _isatty(int fd)
|
|
{
|
|
if (fd >= STDIN_FILENO && fd <= STDERR_FILENO)
|
|
return 1;
|
|
|
|
errno = EBADF;
|
|
return 0;
|
|
}
|
|
|
|
__attribute__((weak)) int _close(int fd)
|
|
{
|
|
if (fd >= STDIN_FILENO && fd <= STDERR_FILENO)
|
|
return 0;
|
|
|
|
errno = EBADF;
|
|
return -1;
|
|
}
|
|
|
|
__attribute__((weak)) int _lseek(int fd, int ptr, int dir)
|
|
{
|
|
(void)fd;
|
|
(void)ptr;
|
|
(void)dir;
|
|
|
|
errno = EBADF;
|
|
return -1;
|
|
}
|
|
|
|
__attribute__((weak)) int _fstat(int fd, struct stat *st)
|
|
{
|
|
if (fd >= STDIN_FILENO && fd <= STDERR_FILENO)
|
|
{
|
|
st->st_mode = S_IFCHR;
|
|
return 0;
|
|
}
|
|
|
|
errno = EBADF;
|
|
return 0;
|
|
}
|
|
|
|
__attribute__((weak)) int _getpid(void)
|
|
{
|
|
errno = ENOSYS;
|
|
return -1;
|
|
}
|
|
|
|
__attribute__((weak)) int _kill(pid_t pid, int sig)
|
|
{
|
|
(void)pid;
|
|
(void)sig;
|
|
errno = ENOSYS;
|
|
return -1;
|
|
}
|