#include "shell_uart.h" //发送一个字符 void dev_uart_out_char(char c) { uart_putchar(TERM_UART_INDEX, c); } //读取一个字符 char dev_uart_in_char() { uart_device_info *dev = (uart_device_info *)g_term_uart_handle; //osSemaphoreWait(dev->sem_recv_one_byte_data,0); osDelay(300); return uart_dev_in_char(g_term_uart_handle); } #if 0 //shell命令行使用 __weak size_t __write(int handle, const unsigned char * buffer, size_t size) { size_t nChars = 0; if (buffer == 0) { /* This means that we should flush internal buffers. Since we*/ /* don't we just return. (Remember, "handle" == -1 means that all*/ /* handles should be flushed.)*/ return 0; } /* This function only writes to "standard out" and "standard err",*/ /* for all other file handles it returns failure.*/ if ((handle != _LLIO_STDOUT) && (handle != _LLIO_STDERR)) { return _LLIO_ERROR; } /* Send data.*/ while (size--) { dev_uart_out_char(*buffer++); ++nChars; } return nChars; } __weak size_t __read(int handle, unsigned char * buffer, size_t size) { size_t nChars = 0; uint16_t ch = 0; if (buffer == 0) { /* This means that we should flush internal buffers. Since we*/ /* don't we just return. (Remember, "handle" == -1 means that all*/ /* handles should be flushed.)*/ return 0; } /* This function only writes to "standard out" and "standard err",*/ /* for all other file handles it returns failure.*/ if ((handle != _LLIO_STDIN) && (handle != _LLIO_STDERR)) { return _LLIO_ERROR; } /* read data.*/ while (size--) { ch=dev_uart_in_char(); *buffer++ = (char)ch & 0xFF; ++nChars; } return nChars; } /** * \brief UART putchar function * \attention 内部函数,用户无法调用 * \param[in] instance UART模块号 * \param[in] str 指向字符串常量的指针 * \retval None */ static void UART_putstr(UART_MemMapPtr instance, const char *str) { while(*str != '\0') { uart_putchar(UART1_BASE_PTR, *str++); } } /** * \brief 进制转换 * \attention 内部函数,用户无法调用 * \retval None */ static void printn(unsigned int n, unsigned int b) { static char *ntab = "0123456789ABCDEF"; unsigned int a, m; if (n / b) { a = n / b; printn(a, b); } m = n % b; uart_putchar(UART1_BASE_PTR, ntab[m]); } #endif