| RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_INT_TX | uart_obj[i].uart_dma_flag , NULL); RT_ASSERT(result == RT_EOK); } return result; } 创建UART设备。对UART设备来说,在驱动开发时需要先从struct rt_serial_device结构中派生出新的串口设备模型,然后根据自己的设备类型定义私有数据域。特别是...
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_INT_TX | uart_obj[i].uart_dma_flag , NULL); 这就上升到串口设备驱动框架层,即serial.c中的实现,在serial.c中,同样有一组串口配置及操作的回调函数,代码如下: rt_err_t rt_hw_serial_register(struct rt_serial_device *serial, c...
登录后复制if (rt_device_open(new_device, RT_DEVICE_OFLAG_RDWR | RT_DEVICE_FLAG_STREAM | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_INT_TX ) == RT_EOK) { _console_device = new_device; } 或者,先用 poll 模式 set console device 登录后复制/* set new console device */ if (rt_device...
result = rt_hw_serial_register(&uart_obj[i].serial, uart_obj[i].config->name, RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_INT_TX | uart_obj[i].uart_dma_flag , NULL); RT_ASSERT(result == RT_EOK); } return result; } 我们看到,该函数名是rt_为前缀的,要被R...
1) 配置shell使用串口1:RT-Thread Kernel ---> Kernel Device Object ---> 修改the device name for console为uart1。 2) 勾选Using UART1、Using UART2,选择芯片型号为STM32F407ZE,时钟源为外部8MHz,如图所示: 图A.3 使用menuconfig配置串口
case RT_DEVICE_CTRL_CLR_INT: hal_uart_control(uart->handle.instance, UART_RXIT_ENABLE, HAL_DISABLE); break; /* enable interrupt */ case RT_DEVICE_CTRL_SET_INT: hal_uart_clrflag(uart->handle.instance, UART_FLAG_RXPND); hal_uart_control(uart->handle.instance, UART_RXIT_ENABLE, HAL_...
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, &uart1); 这个函数的实现位于serial.c中,我们将在下一小节分析,暂且不表。 显然,函数rt_hw_usart_init,顾名思义,是用于初始化USART硬件的函数,因此这个函数一定会在USART使用之前被调用。搜索工程发现,这个函数是在board.c中rt_hw...
rt_device_open(serial,RT_DEVICE_FLAG_INT_RX|RT_DEVICE_FLAG_STREAM);//上面的参数对应以下含义://#define RT_DEVICE_FLAG_INT_RX 0x100 /**< INT mode on Rx *///#define RT_DEVICE_FLAG_DMA_RX 0x200 /**< DMA mode on Rx *///#define RT_DEVICE_FLAG_INT_TX 0x400 /**< INT mode on...
我选用的是PE3 – TX2G1 ,PE2 – RX2G1. 通过寄存器FUNCMCON1 来配置,看看FUNCMCON1的内容: 只要在合适的地方插入下面的语句就可以实现配置。 FUNCMCON1 = ((1u<<8)|(1u<<4)); 1.2 配置GPIO复用的代码应该放在哪里 串口初始化代码在《ab32vg1_hal_msp.c》文件中,下面是修改后的代码,uart0和uart...
RT_DEVICE_FLAG_INT_RX)){rt_kprintf("打开串口设备失败!\n");return RT_ERROR;}rt_kprintf("打开串口设备成功!\n");/* step5:设置接收回调函数 */rt_device_set_rx_indicate(serial, uart_recv_callback);/* step6:数据处理及展示 */while (1){if (1 == rk_ok_flag && 0 == rt_device_rea...