123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- /*
- * Copyright (c) 2006-2021, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2023-11-30 Meco Man First version
- */
- #include <board.h>
- #include <rtthread.h>
- #include <drv_common.h>
- static UART_HandleTypeDef console_uart;
- void rt_hw_console_init(void)
- {
- HAL_UART_DeInit(&console_uart);
- #ifdef USART1
- if (rt_strcmp(RT_CONSOLE_DEVICE_NAME, "uart1") == 0)
- {
- console_uart.Instance = USART1;
- }
- #endif /* USART1 */
- #ifdef USART2
- else if (rt_strcmp(RT_CONSOLE_DEVICE_NAME, "uart2") == 0)
- {
- console_uart.Instance = USART2;
- }
- #endif /* USART2 */
- #ifdef USART3
- else if (rt_strcmp(RT_CONSOLE_DEVICE_NAME, "uart3") == 0)
- {
- console_uart.Instance = USART3;
- }
- #endif /* USART3 */
- #ifdef USART4
- else if (rt_strcmp(RT_CONSOLE_DEVICE_NAME, "uart4") == 0)
- {
- console_uart.Instance = USART4;
- }
- #endif /* USART4 */
- #ifdef USART5
- else if (rt_strcmp(RT_CONSOLE_DEVICE_NAME, "uart5") == 0)
- {
- console_uart.Instance = USART5;
- }
- #endif /* USART5 */
- #ifdef USART6
- else if (rt_strcmp(RT_CONSOLE_DEVICE_NAME, "uart6") == 0)
- {
- console_uart.Instance = USART6;
- }
- #endif /* USART6 */
- #ifdef USART7
- else if (rt_strcmp(RT_CONSOLE_DEVICE_NAME, "uart7") == 0)
- {
- console_uart.Instance = USART7;
- }
- #endif /* USART7 */
- else
- {
- RT_ASSERT(0);
- }
- console_uart.Init.BaudRate = 115200;
- console_uart.Init.WordLength = UART_WORDLENGTH_8B;
- console_uart.Init.StopBits = UART_STOPBITS_1;
- console_uart.Init.Parity = UART_PARITY_NONE;
- console_uart.Init.Mode = UART_MODE_TX_RX;
- console_uart.Init.HwFlowCtl = UART_HWCONTROL_NONE;
- if (HAL_UART_Init(&console_uart) != HAL_OK)
- {
- Error_Handler();
- }
- }
- void rt_hw_console_output(const char *str)
- {
- rt_size_t i = 0, size = 0;
- char a = '\r';
- __HAL_UNLOCK(&console_uart);
- size = rt_strlen(str);
- for (i = 0; i < size; i++)
- {
- if (*(str + i) == '\n')
- {
- HAL_UART_Transmit(&console_uart, (uint8_t *)&a, 1, 1);
- }
- HAL_UART_Transmit(&console_uart, (uint8_t *)(str + i), 1, 1);
- }
- }
- char rt_hw_console_getchar(void)
- {
- int ch = -1;
- if (HAL_UART_Receive(&console_uart, (uint8_t *)&ch, 1, 0) != HAL_OK)
- {
- ch = -1;
- rt_thread_mdelay(10);
- }
- return ch;
- }
|