设备与驱动之串口驱动

应用程序通过 RT-Thread提供的 I/O 设备管理接口来访问串口硬件,相关接口如下所示:

函数描述
rt_device_find()查找设备
rt_device_open()打开设备
rt_device_read()读取数据
rt_device_write()写入数据
rt_device_control()控制设备
rt_device_set_rx_indicate()设置接收回调函数
rt_device_set_tx_complete()设置发送完成回调函数
rt_device_close()关闭设备

rt_device_t rt_device_find(const char* name);
rt_err_t rt_device_open(rt_device_t dev, rt_uint16_t oflags);
flag取值
#define RT_DEVICE_FLAG_STREAM 0x040 /* 流模式 /
/
接收模式参数 /
#define RT_DEVICE_FLAG_INT_RX 0x100 /
中断接收模式 /
#define RT_DEVICE_FLAG_DMA_RX 0x200 /
DMA 接收模式 /
/
发送模式参数 /
#define RT_DEVICE_FLAG_INT_TX 0x400 /
中断发送模式 /
#define RT_DEVICE_FLAG_DMA_TX 0x800 /
DMA 发送模式 */

rt_err_t rt_device_control(rt_device_t dev, rt_uint8_t cmd, void* arg);//控制串口
struct serial_configure
{
rt_uint32_t baud_rate; /* 波特率 /
rt_uint32_t data_bits :4; /
数据位 /
rt_uint32_t stop_bits :2; /
停止位 /
rt_uint32_t parity :2; /
奇偶校验位 /
rt_uint32_t bit_order :1; /
高位在前或者低位在前 /
rt_uint32_t invert :1; /
模式 /
rt_uint32_t bufsz :16; /
接收数据缓冲区大小 /
rt_uint32_t reserved :4; /
保留位 /
};
rt_size_t rt_device_write(rt_device_t dev, rt_off_t pos, const void
buffer, rt_size_t size);//发送数据
rt_err_t rt_device_set_tx_complete(rt_device_t dev, rt_err_t (*tx_done)(rt_device_t dev,void *buffer));//发送完成设置回调函数
rt_err_t rt_device_set_rx_indicate(rt_device_t dev, rt_err_t (rx_ind)(rt_device_t dev,rt_size_t size));//接收完成设置回调函数
rt_size_t rt_device_read(rt_device_t dev, rt_off_t pos, void
buffer, rt_size_t size);//接收数据
rt_err_t rt_device_close(rt_device_t dev);//关闭串口设备

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值