当前位置:网站首页>3.1 detailed explanation of rtthread serial port device (V1)
3.1 detailed explanation of rtthread serial port device (V1)
2022-07-06 03:25:00 【rou252051452】
1、 A serial port (UART) Equipment description
rtthread adopt serial.c and serial.h Two files are used to manage serial port devices . adopt serial.h Structural body in rt_serial_device Define serial port equipment , The serial port device inherits from the device base class rt_device,rt_device Inherited from rt_object Base class , The inheritance relationship is as follows

The serial port device realizes the function of rt_device Inheritance of device base class , The private member of the structure determines the relevant operations of the serial port device .
struct rt_serial_device
{
struct rt_device parent;
const struct rt_uart_ops *ops;
struct serial_configure config;
void *serial_rx;
void *serial_tx;
};
typedef struct rt_serial_device rt_serial_t;2、 Initialization and registration of serial port devices

Start-up phase rtthread It will be based on whether RT_USING_SERIAL Definition , stay hw_board_init Function to initialize the serial port device , stay rt_hw_usart_init In function DMA And serial port related configuration parameters , Finally call the function rt_hw_serial_register To achieve STM32 Serial port device association and device mounting .
int rt_hw_usart_init(void)
{
/*
Calculate the number of serial port devices
1、drv_uasrt.c The document went on struct stm32_uart Type array uart_obj The definition of ,
The number of arrays has macro definitions BSP_USING_UARTx It's the number of .
*/
rt_size_t obj_num = sizeof(uart_obj) / sizeof(struct stm32_uart);
/*
Assign the default value to the configuration information ,115200-8-n-1
*/
struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT;
rt_err_t result = 0;
/*
According to macro definition DMA Initialization of relevant configuration information
*/
stm32_uart_get_dma_config();
/*
Mount the corresponding serial port peripherals according to the number of serial ports
*/
for (int i = 0; i < obj_num; i++)
{
uart_obj[i].config = &uart_config[i];
uart_obj[i].serial.ops = &stm32_uart_ops;
uart_obj[i].serial.config = config;
/* register UART 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;
}
边栏推荐
- 1、工程新建
- The next industry outlet: NFT digital collection, is it an opportunity or a foam?
- SAP ALV color code corresponding color (finishing)
- Image super-resolution using deep convolutional networks(SRCNN)解读与实现
- Handwriting database client
- Map sorts according to the key value (ascending plus descending)
- Analyze 菜单分析
- Linear regression and logistic regression
- Cross origin cross domain request
- 1003 emergency (25 points), "DIJ deformation"
猜你喜欢
随机推荐
Image super-resolution using deep convolutional networks(SRCNN)解读与实现
Problems encountered in 2022 work IV
Research on cooperative control of industrial robots
SD card reports an error "error -110 whilst initializing SD card
【Rust 笔记】18-宏
八道超经典指针面试题(三千字详解)
SD卡报错“error -110 whilst initialising SD card
three. JS page background animation liquid JS special effect
SWC introduction
2.1 rtthread pin设备详解
SD卡報錯“error -110 whilst initialising SD card
Analyze menu analysis
Lua uses require to load the shared library successfully, but the return is Boolean (always true)
Analyze 菜单分析
Quartz misfire missed and compensated execution
Differences and application scenarios between resulttype and resultmap
继承day01
IPv6 jobs
真机无法访问虚拟机的靶场,真机无法ping通虚拟机
【RISC-V】外部中断









