当前位置:网站首页>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;
}
边栏推荐
- [padding] an error is reported in the prediction after loading the model weight attributeerror: 'model' object has no attribute '_ place‘
- The next industry outlet: NFT digital collection, is it an opportunity or a foam?
- Four logs of MySQL server layer
- C language judgment, ternary operation and switch statement usage
- 1003 emergency (25 points), "DIJ deformation"
- Canvas cut blocks game code
- Performance test method of bank core business system
- SAP ALV单元格级别设置颜色
- 2022工作中遇到的问题四
- Inherit day01
猜你喜欢
EDCircles: A real-time circle detector with a false detection control 翻译
C language judgment, ternary operation and switch statement usage
ASU & OSU | model based regularized off-line meta reinforcement learning
Tomb. Weekly update of Finance (February 7 - February 13)
SAP ALV颜色代码对应颜色(整理)
Canvas cut blocks game code
【SLAM】lidar-camera外参标定(港大MarsLab)无需二维码标定板
教你用Pytorch搭建一个自己的简单的BP神经网络( 以iris数据集为例 )
3.1 rtthread 串口设备(V1)详解
2.2 STM32 GPIO操作
随机推荐
Pointer written test questions ~ approaching Dachang
Microsoft Research, UIUC & Google research | antagonistic training actor critic based on offline training reinforcement learning
2022工作中遇到的问题四
mysqldump数据备份
适合程序员学习的国外网站推荐
Yyds dry inventory what is test driven development
Computer graduation project asp Net fitness management system VS development SQLSERVER database web structure c programming computer web page source code project
Shell pass parameters
Résumé des méthodes de reconnaissance des caractères ocr
记录一下逆向任务管理器的过程
Shell 传递参数
Restful style
2.1 rtthread pin设备详解
Handwriting database client
Pelosi: Congress will soon have legislation against members' stock speculation
1003 emergency (25 points), "DIJ deformation"
EDCircles: A real-time circle detector with a false detection control 翻译
手写数据库客户端
SWC介绍
深入探究指针及指针类型