发现可以正常编译,但是打印异常,只能打印出几个字符且没有规律。 解决办法:造serial_v2中应该设置TX_BUFSIZE=0;如果不设置成零在系统初始化中进入rt_console_set_device->rt_device_open->rt_serial_open->rt_serial_tx_enable会设置成串口的write函数为_serial_fifo_tx_bloching_buf。在第一次调用打印信息时候...
所涉及的主要源码文件有:驱动框架文件(usart.c,usart.h),底层硬件驱动文件(serial.c,serial.h)。应用串口设备驱动时,需要在rtconfig.h中宏定义#define RT_USING_SERIAL。 一、RTT的设备驱动程序概述 编写uart的驱动程序,首先需要了解RTT的设备框架,这里以usart的驱动来具体分析RTT的IO设备管理。注:参考《RTT实时操...
先看到rtconfig.h多了RT_USING_I2C宏。再看看工程目录(下图),Amazing, 什么也没多!正常情况会多一个...
#endif /* RT_USING_DEVICE */ } 有set 也有 unset, 不是吗? unset 是为了调用 `rt_hw_console_output` 而不是 `rt_device_write` 输出打印信息。 `rt_console_flush` 既考虑启用设备框架也考虑未启用设备框架两种情况。`rt_device_flush(_console_device)` 会调用上文的 `rt_serial_flush` ;`rt_hw...
#ifdef RT_SERIAL_USING_DMA uart->dma_rx.last_index = 0; #endif hal_uart_init(&uart->handle); return RT_EOK; } static rt_err_t ab32_control(struct rt_serial_device *serial, int cmd, void *arg) { struct ab32_uart *uart; ...
12 depends on BSP_USING_UART2 && RT_SERIAL_USING_DMA 13 default n 14 endif 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 2.2 下载软件包 接下来我们就可以下载软件包了,右键打开 env 工具。 输入menuconfig 进入Hardware Drivers打开两个串口: ...
select RT_USING_SERIAL if BSP_USING_UART config BSP_USING_UART0 bool "Enable UART0" default y config BSP_UART0_RX_USING_DMA bool "Enable UART0 RX DMA" depends on BSP_USING_UART0 select RT_SERIAL_USING_DMA default n config BSP_USING_UART1 ...
我们看到,该函数名是rt_为前缀的,要被RT-Thread上层函数调用,具体是在drv_common.c中通过宏RT_USING_SERIAL控制的初始函数: RT_WEAK void rt_hw_board_init() { ... /* USART driver initialization is open by default */ #ifdef RT_USING_SERIAL rt_hw...
#ifdef RT_USING_SERIAL rt_hw_usart_init(); #endif } 1. 使能串口时钟 我们使用的串口1对应硬件引脚是: PA9 ---> USART1_TX PA10 ---> USART1_RX 因此,在rt_hw_pin_init()里使能GPIOA的时钟: int rt_hw_pin_init(void) { #if defined...
using serial name to name tty introduce hook for tty,improve code quality. fix: code format of serial.c and compile error in aarch64 context_gcc fix posix tty, and add more baudrate(#8683) i2c: merge the software i2c driver(#9886) ...