当前位置:网站首页>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;
}
边栏推荐
- Computer graduation project asp Net fitness management system VS development SQLSERVER database web structure c programming computer web page source code project
- These are not very good
- Selenium share
- Descriptor implements ORM model
- Introduction to DeNO
- SWC介绍
- Brush questions in summer -day3
- js凡客banner轮播图js特效
- 2.2 STM32 GPIO操作
- IPv6 comprehensive experiment
猜你喜欢
适合程序员学习的国外网站推荐
Redo file corruption repair
OCR文字識別方法綜述
MADDPG的pythorch实现——(1)OpenAI MADDPG环境配置
Linear programming matlab
Web security SQL injection vulnerability (1)
施努卡:视觉定位系统 视觉定位系统的工作原理
Teach you to build your own simple BP neural network with pytoch (take iris data set as an example)
Pytorch基础——(1)张量(tensor)的初始化
11. Container with the most water
随机推荐
Remote Sensing Image Super-resolution and Object Detection: Benchmark and State of the Art
Buuctf question brushing notes - [geek challenge 2019] easysql 1
【paddle】加载模型权重后预测报错AttributeError: ‘Model‘ object has no attribute ‘_place‘
SD卡報錯“error -110 whilst initialising SD card
IPv6 jobs
IPv6 comprehensive experiment
The solution of permission denied (750 permissions should be used with caution)
StrError & PERROR use yyds dry inventory
SAP ALV color code corresponding color (finishing)
Linear programming matlab
Résumé des méthodes de reconnaissance des caractères ocr
What are the principles of software design (OCP)
The next industry outlet: NFT digital collection, is it an opportunity or a foam?
[Li Kou] the second set of the 280 Li Kou weekly match
Record the process of reverse task manager
An article about liquid template engine
深入探究指针及指针类型
【SLAM】ORB-SLAM3解析——跟踪Track()(3)
Deno介绍
Linear regression and logistic regression