#include #include #include #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; }