cmd 和 arg 参数是被限定的参数,只能是一个值和一种类型。4.发送数据:rt_size_t rt_device_write...
rt_device_t dev这个是获取到的设备句柄 rt_uint16_t oflags设备模式标志,用来设置串口工作的模式 RT...
void *buf, rt_size_t len) 2{ 3 if (sensor->config.mode == RT_SENSOR_MODE_POLLING) 4 { 5 return _xxx_acc_polling_get_data(sensor, buf, len); 6 } 7 else if (sensor->config.mode == RT_SENSOR_MODE_INT) 8 { 9 return _xxx_acc_int_get_data(sensor, buf, len); 10 } 11 ...
rt_err_t (*rx_ind)(rt_device_t dev, rt_size_t size)) 若串口以中断接收模式打开: 当串口接收到一个数据产生中断时,就会调用回调函数,并且会把此时缓冲区的数据大小放在 size 参数里,把串口设备句柄放在 dev 参数里供调用者获取。 若串口以 DMA 接收模式打开: 当DMA 完成一批数据的接收后会调用此回调...
sem->value=(rt_uint16_t)value; 在rt_malloc(rt_size_t size)中使用到了take函数,尝试获取信号量 /* take memory semaphore */rt_sem_take(&heap_sem,RT_WAITING_FOREVER); rt_err_trt_sem_take(rt_sem_t sem,rt_int32_t time){register rt_base_t temp;struct rt_thread*thread;/* parameter ...
void *rt_malloc(rt_size_t size) void rt_free(void *ptr) 这里面有个rt_page,这个函数是用来为zone分配内存而使用的。 structrt_page_head{structrt_page_head*next;/* next valid page */rt_size_tpage;/* number of page *//* dummy */chardummy[RT_MM_PAGE_SIZE-(sizeof(structrt_page_head...
rt_serial_device*serial);rt_size_t(*dma_transmit)(struct rt_serial_device*serial,rt_uint8_t*buf,rt_size_t size,int direction);};voidrt_hw_serial_isr(struct rt_serial_device*serial,int event);rt_err_trt_hw_serial_register(struct rt_serial_device*serial,constchar*name,rt_uint32_t ...
rt_mq_t rt_mq_create(const char *name, rt_size_t msg_size, rt_size_t max_msgs, rt_uint8_t flag) 如果使用 `rt_mq_create` 创建消息队列,消息队列池自动根据消息体大小 `msg_size` 和消息队列最多容纳的消息数量 `max_msgs` 计算。
*/rt_size_trt_device_read(rt_device_tdev,rt_off_tpos,void*buffer,rt_size_tsize) 调用这个函数,会从 dev 设备中读取数据,并存放在 buffer 缓冲区中,这个缓冲区的最大长度是 size,pos 根据不同的设备类别有不同的意义。 写设备: 对应底层rt_size_t (*write) (rt_device_t dev, rt_off_t pos,...
/* 定义内存池控制块 */ static rt_mp_t test_mp = RT_NULL; /* 定义申请内存的指针 */ static rt_uint32_t *p_test = RT_NULL; /* 相关宏定义 */ #define BLOCK_COUNT 20 //内存块数量 #define BLOCK_SIZE 3 //内存块大小 /* 创建一个静态内存池 */ test_mp = rt_mp_create("test_mp...