1.优化keil文件不最后不加一行报警告的问题。
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# 简介
|
||||
|
||||
**mr-library** 是一个专为嵌入式系统设计的轻量级框架,模块化的软件架构充分考虑了嵌入式系统的资源和性能要求。
|
||||
**mr-library** 是一个专为嵌入式系统设计的轻量级框架,模块化的软件架构充分考虑了嵌入式系统的资源和性能要求。
|
||||
通过提供标准化的设备管理等,极大地简化了嵌入式应用的开发难度,帮助开发者快速构建嵌入式应用程序。
|
||||
|
||||
**设备框架** 为开发者提供标准化的接口(open、close、ioctl、read、write),解耦应用程序与底层硬件驱动,使应用开发无需硬件驱动的实现细节。
|
||||
|
||||
@@ -147,4 +147,4 @@ mr_err_t drv_adc_init(void)
|
||||
}
|
||||
MR_INIT_DRIVER_EXPORT(drv_adc_init);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -29,4 +29,4 @@ struct drv_adc_data
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* _DRV_ADC_H_ */
|
||||
#endif /* _DRV_ADC_H_ */
|
||||
|
||||
@@ -29,4 +29,4 @@ struct drv_dac_data
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* _DRV_DAC_H_ */
|
||||
#endif /* _DRV_DAC_H_ */
|
||||
|
||||
@@ -14,4 +14,4 @@
|
||||
#include "device/pin.h"
|
||||
#include "mrboard.h"
|
||||
|
||||
#endif /* _DRV_GPIO_H_ */
|
||||
#endif /* _DRV_GPIO_H_ */
|
||||
|
||||
@@ -31,4 +31,4 @@ struct drv_soft_i2c_bus_data
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* _DRV_I2C_H_ */
|
||||
#endif /* _DRV_I2C_H_ */
|
||||
|
||||
@@ -41,38 +41,41 @@ enum
|
||||
};
|
||||
|
||||
static struct ch32_pwm_data ch32_pwm_data[] =
|
||||
{
|
||||
{
|
||||
#ifdef MR_BSP_PWM_1
|
||||
{"pwm1",TIM1,RCC_APB2Periph_TIM1,RCC_APB2Periph_GPIOA,GPIOA,GPIO_Pin_8,GPIO_Pin_9,GPIO_Pin_10,GPIO_Pin_11},
|
||||
{"pwm1", TIM1, RCC_APB2Periph_TIM1, RCC_APB2Periph_GPIOA, GPIOA, GPIO_Pin_8, GPIO_Pin_9, GPIO_Pin_10,
|
||||
GPIO_Pin_11},
|
||||
#endif
|
||||
#ifdef MR_BSP_PWM_2
|
||||
{"pwm2",TIM2,RCC_APB1Periph_TIM2,RCC_APB2Periph_GPIOA,GPIOA,GPIO_Pin_0,GPIO_Pin_1,GPIO_Pin_2,GPIO_Pin_3},
|
||||
{"pwm2", TIM2, RCC_APB1Periph_TIM2, RCC_APB2Periph_GPIOA, GPIOA, GPIO_Pin_0, GPIO_Pin_1, GPIO_Pin_2,
|
||||
GPIO_Pin_3},
|
||||
#endif
|
||||
#ifdef MR_BSP_PWM_3
|
||||
{"pwm3",TIM3,RCC_APB1Periph_TIM3,RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB,GPIOA,GPIO_Pin_6,GPIO_Pin_7,},
|
||||
{"pwm3", TIM3, RCC_APB1Periph_TIM3, RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, GPIOA, GPIO_Pin_6,
|
||||
GPIO_Pin_7,},
|
||||
#endif
|
||||
#ifdef MR_BSP_PWM_4
|
||||
{"pwm4",TIM4,RCC_APB1Periph_TIM4,RCC_APB2Periph_GPIOD},
|
||||
{"pwm4", TIM4, RCC_APB1Periph_TIM4, RCC_APB2Periph_GPIOD},
|
||||
#endif
|
||||
#ifdef MR_BSP_PWM_5
|
||||
{"pwm5",TIM5,RCC_APB1Periph_TIM5},
|
||||
{"pwm5", TIM5, RCC_APB1Periph_TIM5},
|
||||
#endif
|
||||
#ifdef MR_BSP_PWM_6
|
||||
{"pwm6",TIM6,RCC_APB1Periph_TIM6},
|
||||
{"pwm6", TIM6, RCC_APB1Periph_TIM6},
|
||||
#endif
|
||||
#ifdef MR_BSP_PWM_7
|
||||
{"pwm7",TIM7,RCC_APB1Periph_TIM7},
|
||||
{"pwm7", TIM7, RCC_APB1Periph_TIM7},
|
||||
#endif
|
||||
#ifdef MR_BSP_PWM_8
|
||||
{"pwm8",TIM8,RCC_APB2Periph_TIM8},
|
||||
{"pwm8", TIM8, RCC_APB2Periph_TIM8},
|
||||
#endif
|
||||
#ifdef MR_BSP_PWM_9
|
||||
{"pwm9",TIM9,RCC_APB2Periph_TIM9},
|
||||
{"pwm9", TIM9, RCC_APB2Periph_TIM9},
|
||||
#endif
|
||||
#ifdef MR_BSP_PWM_10
|
||||
{"pwm10",TIM10,RCC_APB2Periph_TIM10},
|
||||
{"pwm10", TIM10, RCC_APB2Periph_TIM10},
|
||||
#endif
|
||||
};
|
||||
};
|
||||
|
||||
static struct mr_pwm pwm_device[mr_array_num(ch32_pwm_data)];
|
||||
|
||||
@@ -94,11 +97,11 @@ static mr_uint32_t ch32_pwm_read(mr_pwm_t pwm, mr_off_t channel)
|
||||
mr_err_t drv_pwm_init(void)
|
||||
{
|
||||
static struct mr_pwm_ops drv_ops =
|
||||
{
|
||||
ch32_pwm_configure,
|
||||
ch32_pwm_write,
|
||||
ch32_pwm_read,
|
||||
};
|
||||
{
|
||||
ch32_pwm_configure,
|
||||
ch32_pwm_write,
|
||||
ch32_pwm_read,
|
||||
};
|
||||
mr_size_t count = mr_array_num(pwm_device);
|
||||
mr_err_t ret = MR_ERR_OK;
|
||||
|
||||
@@ -106,8 +109,8 @@ mr_err_t drv_pwm_init(void)
|
||||
{
|
||||
ret = mr_pwm_device_add(&pwm_device[count],
|
||||
ch32_pwm_data[count].name,
|
||||
&drv_ops,&ch32_pwm_data[count]
|
||||
);
|
||||
&drv_ops, &ch32_pwm_data[count]
|
||||
);
|
||||
MR_ASSERT(ret == MR_ERR_OK);
|
||||
}
|
||||
|
||||
@@ -115,4 +118,4 @@ mr_err_t drv_pwm_init(void)
|
||||
}
|
||||
MR_INIT_DRIVER_EXPORT(drv_pwm_init);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -368,4 +368,4 @@ mr_err_t drv_spi_bus_init(void)
|
||||
}
|
||||
MR_INIT_DRIVER_EXPORT(drv_spi_bus_init);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -35,4 +35,4 @@ struct drv_spi_bus_data
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* _DRV_SPI_H_ */
|
||||
#endif /* _DRV_SPI_H_ */
|
||||
|
||||
@@ -313,4 +313,4 @@ mr_err_t drv_timer_init(void)
|
||||
}
|
||||
MR_INIT_DRIVER_EXPORT(drv_timer_init);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -30,4 +30,4 @@ struct drv_timer_data
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* _DRV_TIMER_H_ */
|
||||
#endif /* _DRV_TIMER_H_ */
|
||||
|
||||
@@ -240,7 +240,6 @@ static mr_uint8_t drv_serial_read(mr_serial_t serial)
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return uart_data->instance->DATAR & 0xff;
|
||||
}
|
||||
|
||||
@@ -362,4 +361,4 @@ mr_err_t drv_uart_init(void)
|
||||
}
|
||||
MR_INIT_DRIVER_EXPORT(drv_uart_init);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -35,4 +35,4 @@ struct drv_uart_data
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* _DRV_UART_H_ */
|
||||
#endif /* _DRV_UART_H_ */
|
||||
|
||||
@@ -18,4 +18,4 @@ void mr_delay_us(mr_size_t us)
|
||||
void mr_delay_ms(mr_size_t ms)
|
||||
{
|
||||
Delay_Ms(ms);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,4 +45,4 @@
|
||||
#include "drv_timer.h"
|
||||
#endif
|
||||
|
||||
#endif /* _MR_DRV_H_ */
|
||||
#endif /* _MR_DRV_H_ */
|
||||
|
||||
@@ -140,4 +140,4 @@ mr_err_t mr_adc_device_add(mr_adc_t adc, const char *name, struct mr_adc_ops *op
|
||||
return mr_device_add(&adc->device, name, Mr_Device_Type_ADC, MR_DEVICE_OFLAG_RDONLY, &device_ops, data);
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -65,4 +65,4 @@ mr_err_t mr_adc_device_add(mr_adc_t adc, const char *name, struct mr_adc_ops *op
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _ADC_H_ */
|
||||
#endif /* _ADC_H_ */
|
||||
|
||||
@@ -140,4 +140,4 @@ mr_err_t mr_dac_device_add(mr_dac_t dac, const char *name, struct mr_dac_ops *op
|
||||
return mr_device_add(&dac->device, name, Mr_Device_Type_DAC, MR_DEVICE_OFLAG_WRONLY, &device_ops, data);
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -65,4 +65,4 @@ mr_err_t mr_dac_device_add(mr_dac_t dac, const char *name, struct mr_dac_ops *op
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _DAC_H_ */
|
||||
#endif /* _DAC_H_ */
|
||||
|
||||
@@ -644,4 +644,4 @@ mr_err_t mr_soft_i2c_bus_add(mr_soft_i2c_bus_t i2c_bus, const char *name, struct
|
||||
return mr_i2c_bus_add(&i2c_bus->i2c_bus, name, &i2c_bus_ops, data);
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -163,4 +163,4 @@ mr_err_t mr_soft_i2c_bus_add(mr_soft_i2c_bus_t i2c_bus, const char *name, struct
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _I2C_H_ */
|
||||
#endif /* _I2C_H_ */
|
||||
|
||||
@@ -146,4 +146,4 @@ void mr_pin_device_isr(mr_pin_t pin, mr_off_t number)
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -84,4 +84,4 @@ void mr_pin_device_isr(mr_pin_t pin, mr_off_t number);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _PIN_H_ */
|
||||
#endif /* _PIN_H_ */
|
||||
|
||||
@@ -159,4 +159,4 @@ mr_err_t mr_pwm_device_add(mr_pwm_t pwm, const char *name, struct mr_pwm_ops *op
|
||||
return mr_device_add(&pwm->device, name, Mr_Device_Type_PWM, MR_DEVICE_OFLAG_RDWR, &device_ops, data);
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -283,4 +283,4 @@ void mr_serial_device_isr(mr_serial_t serial, mr_uint32_t event)
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -134,4 +134,4 @@ void mr_serial_device_isr(mr_serial_t serial, mr_uint32_t event);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _SERIAL_H_ */
|
||||
#endif /* _SERIAL_H_ */
|
||||
|
||||
@@ -703,4 +703,4 @@ void mr_spi_bus_isr(mr_spi_bus_t spi_bus, mr_uint32_t event)
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -176,4 +176,4 @@ void mr_spi_bus_isr(mr_spi_bus_t spi_bus, mr_uint32_t event);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _SPI_H_ */
|
||||
#endif /* _SPI_H_ */
|
||||
|
||||
@@ -313,4 +313,4 @@ void mr_timer_device_isr(mr_timer_t timer, mr_uint32_t event)
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -164,7 +164,7 @@
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
3. 结构体,宏等定义需添加注释:
|
||||
|
||||
```c
|
||||
|
||||
@@ -31,7 +31,7 @@ mr_device_t mr_device_find(const char *name);
|
||||
|:--------|:-------|
|
||||
| name | DAC设备名 |
|
||||
| **返回** | |
|
||||
| DAC | 查找设备成功 |
|
||||
| DAC | 查找设备成功 |
|
||||
| MR_NULL | 查找设备失败 |
|
||||
|
||||
----------
|
||||
@@ -42,13 +42,13 @@ mr_device_t mr_device_find(const char *name);
|
||||
mr_err_t mr_device_open(mr_device_t device, mr_uint8_t oflags);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:------------|:-------|
|
||||
| device | DAC设备 |
|
||||
| oflags | 打开方式 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 打开设备成功 |
|
||||
| 错误码 | 打开设备失败 |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:-------|
|
||||
| device | DAC设备 |
|
||||
| oflags | 打开方式 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 打开设备成功 |
|
||||
| 错误码 | 打开设备失败 |
|
||||
|
||||
DAC设备支持以下打开方式:
|
||||
|
||||
@@ -64,14 +64,14 @@ MR_DEVICE_OFLAG_WRONLY /* 只写 */
|
||||
mr_err_t mr_device_ioctl(mr_device_t device, int cmd, void *args);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:----------|:--------|
|
||||
| device | DAC设备 |
|
||||
| cmd | 控制命令 |
|
||||
| args | 控制参数 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 控制设备成功 |
|
||||
| 错误码 | 控制设备失败 |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:-------|
|
||||
| device | DAC设备 |
|
||||
| cmd | 控制命令 |
|
||||
| args | 控制参数 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 控制设备成功 |
|
||||
| 错误码 | 控制设备失败 |
|
||||
|
||||
DAC设备支持以下命令:
|
||||
|
||||
@@ -124,14 +124,14 @@ mr_device_ioctl(dac_device, MR_DEVICE_CTRL_SET_CONFIG, &dac_config);
|
||||
mr_ssize_t mr_device_write(mr_device_t device, mr_off_t pos, const void *buffer, mr_size_t size);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:----------|:--------|
|
||||
| device | DAC设备 |
|
||||
| pos | 写入位置 |
|
||||
| buffer | 写入数据 |
|
||||
| size | 写入数据大小 |
|
||||
| **返回** | |
|
||||
| 实际写入的数据大小 | |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:-------|
|
||||
| device | DAC设备 |
|
||||
| pos | 写入位置 |
|
||||
| buffer | 写入数据 |
|
||||
| size | 写入数据大小 |
|
||||
| **返回** | |
|
||||
| 实际写入的数据大小 | |
|
||||
|
||||
- 写入位置:需要写入数据的通道,有效范围:0-31。
|
||||
- 写入数据:DAC设备输出值,类型为:uint32。
|
||||
|
||||
@@ -22,14 +22,14 @@ I2C(Inter-Integrated Circuit)是一种串行外设接口,用于连接和
|
||||
mr_err_t mr_i2c_device_add(mr_i2c_device_t i2c_device, const char *name, mr_uint32_t address);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:-----------|:---------|
|
||||
| i2c_device | I2C设备 |
|
||||
| name | I2C设备名 |
|
||||
| address | I2C设备地址 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 添加设备成功 |
|
||||
| 错误码 | 添加设备失败 |
|
||||
| 参数 | 描述 |
|
||||
|:-----------|:--------|
|
||||
| i2c_device | I2C设备 |
|
||||
| name | I2C设备名 |
|
||||
| address | I2C设备地址 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 添加设备成功 |
|
||||
| 错误码 | 添加设备失败 |
|
||||
|
||||
I2C设备地址为未向左移1位的地址。
|
||||
|
||||
@@ -39,14 +39,14 @@ I2C设备地址为未向左移1位的地址。
|
||||
mr_err_t mr_device_ioctl(mr_device_t device, int cmd, void *args);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:----------|:--------|
|
||||
| device | I2C设备 |
|
||||
| cmd | 控制命令 |
|
||||
| args | 控制参数 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 控制设备成功 |
|
||||
| 错误码 | 控制设备失败 |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:-------|
|
||||
| device | I2C设备 |
|
||||
| cmd | 控制命令 |
|
||||
| args | 控制参数 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 控制设备成功 |
|
||||
| 错误码 | 控制设备失败 |
|
||||
|
||||
I2C设备支持以下命令:
|
||||
|
||||
@@ -133,14 +133,14 @@ mr_device_ioctl(i2c1_device, MR_DEVICE_CTRL_CONNECT, MR_NULL);
|
||||
mr_ssize_t mr_device_read(mr_device_t device, mr_off_t pos, const void *buffer, mr_size_t size);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:------------|:-------|
|
||||
| device | I2C设备 |
|
||||
| pos | 读取位置 |
|
||||
| buffer | 读取数据 |
|
||||
| size | 读取数据大小 |
|
||||
| **返回** | |
|
||||
| 实际读取的数据大小 | |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:-------|
|
||||
| device | I2C设备 |
|
||||
| pos | 读取位置 |
|
||||
| buffer | 读取数据 |
|
||||
| size | 读取数据大小 |
|
||||
| **返回** | |
|
||||
| 实际读取的数据大小 | |
|
||||
|
||||
- 读取位置:需要读取的(寄存器)地址,如读取0x23地址数据,则pos = 0x23,有效范围:0-2147483647。地址长度根据设置的pos_bits,如不使用时请赋值:-1。
|
||||
|
||||
@@ -169,14 +169,14 @@ mr_device_read(i2c_device, 0x23, buffer, sizeof(buffer));
|
||||
mr_ssize_t mr_device_write(mr_device_t device, mr_off_t pos, const void *buffer, mr_size_t size);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:------------|:-------|
|
||||
| device | I2C设备 |
|
||||
| pos | 写入位置 |
|
||||
| buffer | 写入数据 |
|
||||
| size | 写入数据大小 |
|
||||
| **返回** | |
|
||||
| 实际写入的数据大小 | |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:-------|
|
||||
| device | I2C设备 |
|
||||
| pos | 写入位置 |
|
||||
| buffer | 写入数据 |
|
||||
| size | 写入数据大小 |
|
||||
| **返回** | |
|
||||
| 实际写入的数据大小 | |
|
||||
|
||||
- 写入位置:需要写入的(寄存器)地址,如写入0x23地址数据,则pos = 0x23,有效范围:0-2147483647。地址长度根据设置的pos_bits,如不使用时请赋值:-1。
|
||||
|
||||
|
||||
@@ -27,12 +27,12 @@ GPIO(通用目的输入/输出)是一种可以通过软件进行控制的硬
|
||||
mr_device_t mr_device_find(const char *name);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:----------|:----------|
|
||||
| name | PIN设备名 |
|
||||
| **返回** | |
|
||||
| PIN | 查找设备成功 |
|
||||
| MR_NULL | 查找设备失败 |
|
||||
| 参数 | 描述 |
|
||||
|:--------|:-------|
|
||||
| name | PIN设备名 |
|
||||
| **返回** | |
|
||||
| PIN | 查找设备成功 |
|
||||
| MR_NULL | 查找设备失败 |
|
||||
|
||||
----------
|
||||
|
||||
@@ -42,13 +42,13 @@ mr_device_t mr_device_find(const char *name);
|
||||
mr_err_t mr_device_open(mr_device_t device, mr_uint8_t oflags);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:------------|:-------|
|
||||
| device | PIN设备 |
|
||||
| oflags | 打开方式 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 打开设备成功 |
|
||||
| 错误码 | 打开设备失败 |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:-------|
|
||||
| device | PIN设备 |
|
||||
| oflags | 打开方式 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 打开设备成功 |
|
||||
| 错误码 | 打开设备失败 |
|
||||
|
||||
PIN设备支持以下打开方式:
|
||||
|
||||
@@ -66,14 +66,14 @@ MR_DEVICE_OFLAG_RDWR /* 可读可
|
||||
mr_err_t mr_device_ioctl(mr_device_t device, int cmd, void *args);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:----------|:--------|
|
||||
| device | PIN设备 |
|
||||
| cmd | 控制命令 |
|
||||
| args | 控制参数 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 控制设备成功 |
|
||||
| 错误码 | 控制设备失败 |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:-------|
|
||||
| device | PIN设备 |
|
||||
| cmd | 控制命令 |
|
||||
| args | 控制参数 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 控制设备成功 |
|
||||
| 错误码 | 控制设备失败 |
|
||||
|
||||
PIN设备支持以下命令:
|
||||
|
||||
@@ -177,14 +177,14 @@ mr_device_ioctl(pin_device, MR_DEVICE_CTRL_SET_RX_CB, pin_device_cb);
|
||||
mr_ssize_t mr_device_read(mr_device_t device, mr_off_t pos, const void *buffer, mr_size_t size);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:----------|:--------|
|
||||
| device | PIN设备 |
|
||||
| pos | 读取位置 |
|
||||
| buffer | 读取数据 |
|
||||
| size | 读取数据大小 |
|
||||
| **返回** | |
|
||||
| 实际读取的数据大小 | |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:-------|
|
||||
| device | PIN设备 |
|
||||
| pos | 读取位置 |
|
||||
| buffer | 读取数据 |
|
||||
| size | 读取数据大小 |
|
||||
| **返回** | |
|
||||
| 实际读取的数据大小 | |
|
||||
|
||||
- 读取位置:需要读取的IO编号,如读取B13,则pos = 29,有效范围:>=0。
|
||||
- 读取数据:PIN设备IO输入电平,类型为:int8。
|
||||
@@ -219,14 +219,14 @@ mr_device_read(pin_device, PIN_NUMBER, &pin_level, sizeof(pin_level));
|
||||
mr_ssize_t mr_device_write(mr_device_t device, mr_off_t pos, const void *buffer, mr_size_t size);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:----------|:--------|
|
||||
| device | PIN设备 |
|
||||
| pos | 写入位置 |
|
||||
| buffer | 写入数据 |
|
||||
| size | 写入数据大小 |
|
||||
| **返回** | |
|
||||
| 实际写入的数据大小 | |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:-------|
|
||||
| device | PIN设备 |
|
||||
| pos | 写入位置 |
|
||||
| buffer | 写入数据 |
|
||||
| size | 写入数据大小 |
|
||||
| **返回** | |
|
||||
| 实际写入的数据大小 | |
|
||||
|
||||
- 写入位置:需要写入的IO编号,如读取B13,则pos = 29,有效范围:>=0。
|
||||
- 写入数据:PIN设备IO输出电平,类型为:int8。
|
||||
|
||||
@@ -27,12 +27,12 @@ UART(Universal Asynchronous Receiver/Transmitter)即通用异步收发传输
|
||||
mr_device_t mr_device_find(const char *name);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:---------|:------------|
|
||||
| name | SERIAL设备名 |
|
||||
| **返回** | |
|
||||
| SERIAL | 查找设备成功 |
|
||||
| MR_NULL | 查找设备失败 |
|
||||
| 参数 | 描述 |
|
||||
|:--------|:----------|
|
||||
| name | SERIAL设备名 |
|
||||
| **返回** | |
|
||||
| SERIAL | 查找设备成功 |
|
||||
| MR_NULL | 查找设备失败 |
|
||||
|
||||
----------
|
||||
|
||||
@@ -42,13 +42,13 @@ mr_device_t mr_device_find(const char *name);
|
||||
mr_err_t mr_device_open(mr_device_t device, mr_uint8_t oflags);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:------------|:-----------|
|
||||
| device | SERIAL设备 |
|
||||
| oflags | 打开方式 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 打开设备成功 |
|
||||
| 错误码 | 打开设备失败 |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:---------|
|
||||
| device | SERIAL设备 |
|
||||
| oflags | 打开方式 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 打开设备成功 |
|
||||
| 错误码 | 打开设备失败 |
|
||||
|
||||
SERIAL设备支持以下打开方式:
|
||||
|
||||
@@ -76,14 +76,14 @@ MR_DEVICE_OFLAG_NONBLOCKING /* 非阻塞
|
||||
mr_err_t mr_device_ioctl(mr_device_t device, int cmd, void *args);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:----------|:-----------|
|
||||
| device | SERIAL设备 |
|
||||
| cmd | 控制命令 |
|
||||
| args | 控制参数 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 控制设备成功 |
|
||||
| 错误码 | 控制设备失败 |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:---------|
|
||||
| device | SERIAL设备 |
|
||||
| cmd | 控制命令 |
|
||||
| args | 控制参数 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 控制设备成功 |
|
||||
| 错误码 | 控制设备失败 |
|
||||
|
||||
SERIAL设备支持以下命令:
|
||||
|
||||
@@ -226,14 +226,14 @@ mr_device_ioctl(serial_device, MR_DEVICE_CTRL_SET_TX_BUFSZ, &bufsz);
|
||||
mr_ssize_t mr_device_read(mr_device_t device, mr_off_t pos, const void *buffer, mr_size_t size);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:------------|:-------------|
|
||||
| device | SERIAL设备 |
|
||||
| pos | 读取位置 |
|
||||
| buffer | 读取数据 |
|
||||
| size | 读取数据大小 |
|
||||
| **返回** | |
|
||||
| 实际读取的数据大小 | |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:---------|
|
||||
| device | SERIAL设备 |
|
||||
| pos | 读取位置 |
|
||||
| buffer | 读取数据 |
|
||||
| size | 读取数据大小 |
|
||||
| **返回** | |
|
||||
| 实际读取的数据大小 | |
|
||||
|
||||
使用示例:
|
||||
|
||||
@@ -261,14 +261,14 @@ mr_device_read(serial_device, 0, buffer, sizeof(buffer));
|
||||
mr_ssize_t mr_device_write(mr_device_t device, mr_off_t pos, const void *buffer, mr_size_t size);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:----------|:----------|
|
||||
| device | SERIAL设备 |
|
||||
| pos | 写入位置 |
|
||||
| buffer | 写入数据 |
|
||||
| size | 写入数据大小 |
|
||||
| **返回** | |
|
||||
| 实际写入的数据大小 | |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:---------|
|
||||
| device | SERIAL设备 |
|
||||
| pos | 写入位置 |
|
||||
| buffer | 写入数据 |
|
||||
| size | 写入数据大小 |
|
||||
| **返回** | |
|
||||
| 实际写入的数据大小 | |
|
||||
|
||||
使用示例:
|
||||
|
||||
|
||||
@@ -43,14 +43,14 @@ mr_err_t mr_spi_device_add(mr_spi_device_t spi_device, const char *name, mr_off_
|
||||
mr_err_t mr_device_ioctl(mr_device_t device, int cmd, void *args);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:----------|:--------|
|
||||
| device | SPI设备 |
|
||||
| cmd | 控制命令 |
|
||||
| args | 控制参数 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 控制设备成功 |
|
||||
| 错误码 | 控制设备失败 |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:-------|
|
||||
| device | SPI设备 |
|
||||
| cmd | 控制命令 |
|
||||
| args | 控制参数 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 控制设备成功 |
|
||||
| 错误码 | 控制设备失败 |
|
||||
|
||||
SPI设备支持以下命令:
|
||||
|
||||
@@ -240,14 +240,14 @@ mr_device_ioctl(spi_device, MR_DEVICE_CTRL_SPI_TRANSFER, &spi_transfer);
|
||||
mr_ssize_t mr_device_read(mr_device_t device, mr_off_t pos, const void *buffer, mr_size_t size);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:------------|:-------|
|
||||
| device | SPI设备 |
|
||||
| pos | 读取位置 |
|
||||
| buffer | 读取数据 |
|
||||
| size | 读取数据大小 |
|
||||
| **返回** | |
|
||||
| 实际读取的数据大小 | |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:-------|
|
||||
| device | SPI设备 |
|
||||
| pos | 读取位置 |
|
||||
| buffer | 读取数据 |
|
||||
| size | 读取数据大小 |
|
||||
| **返回** | |
|
||||
| 实际读取的数据大小 | |
|
||||
|
||||
- 读取位置:需要读取的(寄存器)地址,如读取0x23地址数据,则pos = 0x23,有效范围:0-2147483647。地址长度根据设置的pos_bits,如不使用时请赋值:-1。
|
||||
|
||||
@@ -276,14 +276,14 @@ mr_device_read(spi_device, 0x23, buffer, sizeof(buffer));
|
||||
mr_ssize_t mr_device_write(mr_device_t device, mr_off_t pos, const void *buffer, mr_size_t size);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:------------|:-------|
|
||||
| device | SPI设备 |
|
||||
| pos | 写入位置 |
|
||||
| buffer | 写入数据 |
|
||||
| size | 写入数据大小 |
|
||||
| **返回** | |
|
||||
| 实际写入的数据大小 | |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:-------|
|
||||
| device | SPI设备 |
|
||||
| pos | 写入位置 |
|
||||
| buffer | 写入数据 |
|
||||
| size | 写入数据大小 |
|
||||
| **返回** | |
|
||||
| 实际写入的数据大小 | |
|
||||
|
||||
- 写入位置:需要写入的(寄存器)地址,如写入0x23地址数据,则pos = 0x23,有效范围:0-2147483647。地址长度根据设置的pos_bits,如不使用时请赋值:-1。
|
||||
|
||||
|
||||
@@ -21,12 +21,12 @@
|
||||
mr_device_t mr_device_find(const char *name);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:----------|:-------------|
|
||||
| name | TIMER设备名 |
|
||||
| **返回** | |
|
||||
| TIMER | 查找设备成功 |
|
||||
| MR_NULL | 查找设备失败 |
|
||||
| 参数 | 描述 |
|
||||
|:--------|:---------|
|
||||
| name | TIMER设备名 |
|
||||
| **返回** | |
|
||||
| TIMER | 查找设备成功 |
|
||||
| MR_NULL | 查找设备失败 |
|
||||
|
||||
----------
|
||||
|
||||
@@ -36,13 +36,13 @@ mr_device_t mr_device_find(const char *name);
|
||||
mr_err_t mr_device_open(mr_device_t device, mr_uint8_t oflags);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:------------|:-----------|
|
||||
| device | TIMER设备 |
|
||||
| oflags | 打开方式 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 打开设备成功 |
|
||||
| 错误码 | 打开设备失败 |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:--------|
|
||||
| device | TIMER设备 |
|
||||
| oflags | 打开方式 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 打开设备成功 |
|
||||
| 错误码 | 打开设备失败 |
|
||||
|
||||
TIMER设备支持以下打开方式:
|
||||
|
||||
@@ -60,15 +60,14 @@ MR_DEVICE_OFLAG_RDWR /* 可读可
|
||||
mr_err_t mr_device_ioctl(mr_device_t device, int cmd, void *args);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:----------|:------------|
|
||||
| device | TIMER设备 |
|
||||
| cmd | 控制命令 |
|
||||
| args | 控制参数 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 控制设备成功 |
|
||||
| 错误码 | 控制设备失败 |
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:----------|:--------|
|
||||
| device | TIMER设备 |
|
||||
| cmd | 控制命令 |
|
||||
| args | 控制参数 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 控制设备成功 |
|
||||
| 错误码 | 控制设备失败 |
|
||||
|
||||
TIMER设备支持以下命令:
|
||||
|
||||
@@ -134,14 +133,14 @@ mr_device_ioctl(serial_device, MR_DEVICE_CTRL_SET_RX_CB, timer_device_rx_cb);
|
||||
mr_ssize_t mr_device_read(mr_device_t device, mr_off_t pos, const void *buffer, mr_size_t size);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:------------|:--------------|
|
||||
| device | TIMER设备 |
|
||||
| pos | 读取位置 |
|
||||
| buffer | 读取数据 |
|
||||
| size | 读取数据大小 |
|
||||
| **返回** | |
|
||||
| 实际读取的数据大小 | |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:--------|
|
||||
| device | TIMER设备 |
|
||||
| pos | 读取位置 |
|
||||
| buffer | 读取数据 |
|
||||
| size | 读取数据大小 |
|
||||
| **返回** | |
|
||||
| 实际读取的数据大小 | |
|
||||
|
||||
- 读取数据:TIMER设备已运行时间(单位us),类型为:uint32。
|
||||
|
||||
@@ -169,14 +168,14 @@ mr_device_read(serial_device, 0, &buffer, sizeof(buffer));
|
||||
mr_ssize_t mr_device_write(mr_device_t device, mr_off_t pos, const void *buffer, mr_size_t size);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:----------|:-----------|
|
||||
| device | TIMER设备 |
|
||||
| pos | 写入位置 |
|
||||
| buffer | 写入数据 |
|
||||
| size | 写入数据大小 |
|
||||
| **返回** | |
|
||||
| 实际写入的数据大小 | |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:--------|
|
||||
| device | TIMER设备 |
|
||||
| pos | 写入位置 |
|
||||
| buffer | 写入数据 |
|
||||
| size | 写入数据大小 |
|
||||
| **返回** | |
|
||||
| 实际写入的数据大小 | |
|
||||
|
||||
- 写入数据:TIMER设备定时时间(单位us),定时范围1us-4294.967295s,类型为:uint32。写入多个数据时将取最后一个有效数据。
|
||||
|
||||
|
||||
@@ -8,17 +8,17 @@
|
||||
|
||||
代码包含以下文件:
|
||||
|
||||
| 名称 | 描述 |
|
||||
|:-----------|:--------|
|
||||
| mr_library | |
|
||||
| -bsp | 板级支持包 |
|
||||
| -device | 设备文件 |
|
||||
| -document | 文档 |
|
||||
| -driver | 驱动文件 |
|
||||
| -include | 库头文件 |
|
||||
| -module | 组件 |
|
||||
| -package | 软件包 |
|
||||
| -src | 库源文件 |
|
||||
| 名称 | 描述 |
|
||||
|:-----------|:------|
|
||||
| mr_library | |
|
||||
| -bsp | 板级支持包 |
|
||||
| -device | 设备文件 |
|
||||
| -document | 文档 |
|
||||
| -driver | 驱动文件 |
|
||||
| -include | 库头文件 |
|
||||
| -module | 组件 |
|
||||
| -package | 软件包 |
|
||||
| -src | 库源文件 |
|
||||
|
||||
选择需要的文件:
|
||||
|
||||
|
||||
@@ -74,4 +74,4 @@ mr_err_t drv_adc_init(void)
|
||||
}
|
||||
MR_INIT_DRIVER_EXPORT(drv_adc_init);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -71,4 +71,4 @@ mr_err_t drv_dac_init(void)
|
||||
}
|
||||
MR_INIT_DRIVER_EXPORT(drv_dac_init);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -62,4 +62,4 @@ mr_err_t drv_gpio_init(void)
|
||||
}
|
||||
MR_INIT_DRIVER_EXPORT(drv_gpio_init);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -86,4 +86,4 @@ mr_err_t drv_soft_i2c_bus_init(void)
|
||||
}
|
||||
MR_INIT_DRIVER_EXPORT(drv_soft_i2c_bus_init);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -69,7 +69,7 @@ mr_err_t drv_pwm_init(void)
|
||||
{
|
||||
ret = mr_pwm_device_add(&pwm_device[count],
|
||||
drv_pwm_data[count].name,
|
||||
&drv_ops,&drv_pwm_data[count]
|
||||
&drv_ops, &drv_pwm_data[count]
|
||||
);
|
||||
MR_ASSERT(ret == MR_ERR_OK);
|
||||
}
|
||||
@@ -78,4 +78,4 @@ mr_err_t drv_pwm_init(void)
|
||||
}
|
||||
MR_INIT_DRIVER_EXPORT(drv_pwm_init);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -95,4 +95,4 @@ mr_err_t drv_spi_bus_init(void)
|
||||
}
|
||||
MR_INIT_DRIVER_EXPORT(drv_spi_bus_init);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -89,4 +89,4 @@ mr_err_t drv_timer_init(void)
|
||||
}
|
||||
MR_INIT_DRIVER_EXPORT(drv_timer_init);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -91,4 +91,4 @@ mr_err_t drv_uart_init(void)
|
||||
}
|
||||
MR_INIT_DRIVER_EXPORT(drv_uart_init);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -28,4 +28,4 @@ struct drv_uart_data
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* _DRV_UART_H_ */
|
||||
#endif /* _DRV_UART_H_ */
|
||||
|
||||
@@ -42,4 +42,4 @@ void mr_delay_us(mr_size_t us)
|
||||
void mr_delay_ms(mr_size_t ms)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -80,4 +80,4 @@ extern "C" {
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _MR_BOARD_H_ */
|
||||
#endif /* _MR_BOARD_H_ */
|
||||
|
||||
@@ -45,4 +45,4 @@
|
||||
#include "drv_timer.h"
|
||||
#endif
|
||||
|
||||
#endif /* _MR_DRV_H_ */
|
||||
#endif /* _MR_DRV_H_ */
|
||||
|
||||
@@ -130,4 +130,4 @@ mr_ssize_t mr_device_write(mr_device_t device, mr_off_t pos, const void *buffer,
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _MR_API_H_ */
|
||||
#endif /* _MR_API_H_ */
|
||||
|
||||
@@ -107,6 +107,19 @@ extern "C" {
|
||||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @def Message config.
|
||||
*
|
||||
* MR_CFG_DISABLE: Disable msg.
|
||||
* MR_CFG_ENABLE: Enable msg.
|
||||
*/
|
||||
#define MR_CFG_MSG MR_CFG_ENABLE
|
||||
|
||||
#if (MR_CFG_MSG == MR_CFG_ENABLE)
|
||||
|
||||
#define MR_CFG_MSG_RX_BUFSZ 32
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @def Pin config.
|
||||
*
|
||||
@@ -180,4 +193,4 @@ extern "C" {
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _MR_CONFIG_H_ */
|
||||
#endif /* _MR_CONFIG_H_ */
|
||||
|
||||
@@ -427,4 +427,4 @@ typedef struct mr_device_channel *mr_device_channel_t; /* Type for
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _MR_DEF_H_ */
|
||||
#endif /* _MR_DEF_H_ */
|
||||
|
||||
@@ -17,4 +17,4 @@
|
||||
#include "mrdrv.h"
|
||||
#endif
|
||||
|
||||
#endif /* _MR_LIB_H_ */
|
||||
#endif /* _MR_LIB_H_ */
|
||||
|
||||
@@ -335,4 +335,4 @@ MR_INLINE mr_bool_t mr_list_is_empty(mr_list_t list)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _MR_SERVICE_H_ */
|
||||
#endif /* _MR_SERVICE_H_ */
|
||||
|
||||
@@ -72,12 +72,12 @@ mr_err_t mr_eloop_add(mr_eloop_t eloop, const char *name, mr_size_t queue_size);
|
||||
mr_err_t mr_eloop_remove(mr_eloop_t eloop);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:-----------|:-------|
|
||||
| eloop | 事件循环 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 移除成功 |
|
||||
| 错误码 | 移除失败 |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:-----|
|
||||
| eloop | 事件循环 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 移除成功 |
|
||||
| 错误码 | 移除失败 |
|
||||
|
||||
----------
|
||||
|
||||
@@ -87,9 +87,9 @@ mr_err_t mr_eloop_remove(mr_eloop_t eloop);
|
||||
void mr_eloop_handle(mr_eloop_t eloop);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:-----------|:-------|
|
||||
| eloop | 事件循环 |
|
||||
| 参数 | 描述 |
|
||||
|:------|:-----|
|
||||
| eloop | 事件循环 |
|
||||
|
||||
按事件发生顺序处理(FIFO),仅会处理进入处理函数前已发生的事件,防止单一事件循环触发阻塞系统。
|
||||
|
||||
@@ -101,15 +101,15 @@ void mr_eloop_handle(mr_eloop_t eloop);
|
||||
mr_err_t mr_eloop_create_event(mr_eloop_t eloop, mr_uint32_t id, mr_err_t (*cb)(mr_eloop_t ep, void *args), void *args);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:-------------|:---------|
|
||||
| eloop | 事件循环 |
|
||||
| id | 事件ID |
|
||||
| cb | 事件回调函数 |
|
||||
| args | 回调函数参数 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 创建成功 |
|
||||
| 错误码 | 创建失败 |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:-------|
|
||||
| eloop | 事件循环 |
|
||||
| id | 事件ID |
|
||||
| cb | 事件回调函数 |
|
||||
| args | 回调函数参数 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 创建成功 |
|
||||
| 错误码 | 创建失败 |
|
||||
|
||||
当与RTOS线程组合使用时可实现真正意义上的高效并发,并且可根据线程优先级控制事件的响应速度。
|
||||
但是也会引入新的问题,当事件回调中使用任何能使线程挂起的功能时,可能会导致其余所有事件无法响应(等同于所有事件被挂起等待),因此事件处理函数中不因使用类似功能(事件回调应能直接处理无需等待)。
|
||||
@@ -124,13 +124,13 @@ mr_err_t mr_eloop_create_event(mr_eloop_t eloop, mr_uint32_t id, mr_err_t (*cb)(
|
||||
mr_err_t mr_eloop_delete_event(mr_eloop_t eloop, mr_uint32_t id);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:-------------|:---------|
|
||||
| eloop | 事件循环 |
|
||||
| id | 事件ID |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 删除成功 |
|
||||
| 错误码 | 删除失败 |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:-----|
|
||||
| eloop | 事件循环 |
|
||||
| id | 事件ID |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 删除成功 |
|
||||
| 错误码 | 删除失败 |
|
||||
|
||||
----------
|
||||
|
||||
@@ -140,13 +140,13 @@ mr_err_t mr_eloop_delete_event(mr_eloop_t eloop, mr_uint32_t id);
|
||||
mr_err_t mr_eloop_notify_event(mr_eloop_t eloop, mr_uint32_t id);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:-------------|:---------|
|
||||
| eloop | 事件循环 |
|
||||
| id | 事件ID |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 通知成功 |
|
||||
| 错误码 | 通知失败 |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:-----|
|
||||
| eloop | 事件循环 |
|
||||
| id | 事件ID |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 通知成功 |
|
||||
| 错误码 | 通知失败 |
|
||||
|
||||
通知事件为异步操作,实际处理将在事件处理中进行。
|
||||
当通知事件发生失败(错误码 -5)时,请增加缓冲队列大小或提高事件处理频率(缓冲队列已满,无法及时响应事件,导致事件丢失)。
|
||||
@@ -159,13 +159,13 @@ mr_err_t mr_eloop_notify_event(mr_eloop_t eloop, mr_uint32_t id);
|
||||
mr_err_t mr_eloop_trigger_event(mr_eloop_t eloop, mr_uint32_t id);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:-------------|:---------|
|
||||
| eloop | 事件循环 |
|
||||
| id | 事件ID |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 触发成功 |
|
||||
| 错误码 | 触发失败 |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:-----|
|
||||
| eloop | 事件循环 |
|
||||
| id | 事件ID |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 触发成功 |
|
||||
| 错误码 | 触发失败 |
|
||||
|
||||
此操作为同步操作,实际处理将在触发处立即执行。
|
||||
|
||||
|
||||
@@ -308,4 +308,4 @@ mr_uint32_t mr_eloop_string_to_id(const char *string, mr_size_t size)
|
||||
return id;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -309,4 +309,4 @@ mr_err_t mr_eloop_sp_trigger_event(mr_eloop_sp_t eloop, mr_uint8_t id)
|
||||
return MR_ERR_OK;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -68,12 +68,12 @@ mr_err_t mr_etask_add(mr_etask_t etask, const char *name, mr_size_t size);
|
||||
mr_err_t mr_etask_remove(mr_etask_t etask);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:-----------|:-------|
|
||||
| etask | 事件任务 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 移除成功 |
|
||||
| 错误码 | 移除失败 |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:-----|
|
||||
| etask | 事件任务 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 移除成功 |
|
||||
| 错误码 | 移除失败 |
|
||||
|
||||
----------
|
||||
|
||||
@@ -83,9 +83,9 @@ mr_err_t mr_etask_remove(mr_etask_t etask);
|
||||
void mr_etask_tick_update(mr_etask_t etask);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:-----------|:-------|
|
||||
| etask | 事件任务 |
|
||||
| 参数 | 描述 |
|
||||
|:------|:-----|
|
||||
| etask | 事件任务 |
|
||||
|
||||
----------
|
||||
|
||||
@@ -95,9 +95,9 @@ void mr_etask_tick_update(mr_etask_t etask);
|
||||
void mr_etask_handle(mr_etask_t etask);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:-----------|:-------|
|
||||
| etask | 事件任务 |
|
||||
| 参数 | 描述 |
|
||||
|:------|:-----|
|
||||
| etask | 事件任务 |
|
||||
|
||||
按事件发生顺序处理(FIFO),仅会处理进入处理函数前已发生的事件,防止单一事件循环触发阻塞系统。
|
||||
|
||||
@@ -129,7 +129,7 @@ mr_err_t mr_etask_start(mr_etask_t etask,
|
||||
| 错误码 | 启动失败 |
|
||||
|
||||
- sflags: 事件分为普通事件与定时事件。定时事件可分为单次/周期和软件/硬件,单次定时事件在发生完成后将释放自身,周期定时事件在发生完成后将自动重启直至用户停止该事件。
|
||||
软件定时事件在超时发生时将事件加入事件队列中等待处理,而硬件定时器将在任务时钟更新处直接处理。
|
||||
软件定时事件在超时发生时将事件加入事件队列中等待处理,而硬件定时器将在任务时钟更新处直接处理。
|
||||
|
||||
```c
|
||||
MR_ETASK_SFLAG_EVENT /* 普通事件 */
|
||||
@@ -152,13 +152,13 @@ MR_ETASK_SFLAG_TIMER | MR_ETASK_SFLAG_ONESHOT | MR_ETASK_SFLAG_HARD /* 定时事
|
||||
mr_err_t mr_etask_stop(mr_etask_t etask, mr_uint32_t id);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:-------------|:-----|
|
||||
| etask | 事件任务 |
|
||||
| id | 事件ID |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 停止成功 |
|
||||
| 错误码 | 停止失败 |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:-----|
|
||||
| etask | 事件任务 |
|
||||
| id | 事件ID |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 停止成功 |
|
||||
| 错误码 | 停止失败 |
|
||||
|
||||
----------
|
||||
|
||||
@@ -197,11 +197,11 @@ MR_ETASK_WFLAG_STATE /* 状态唤
|
||||
mr_uint32_t mr_etask_str2id(const char *string);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:-------|:------|
|
||||
| string | 字符串 |
|
||||
| **返回** | |
|
||||
| 事件ID | |
|
||||
| 参数 | 描述 |
|
||||
|:-------|:----|
|
||||
| string | 字符串 |
|
||||
| **返回** | |
|
||||
| 事件ID | |
|
||||
|
||||
当事件数量过多且字符串内容相近时可能会出现哈希碰撞。
|
||||
|
||||
|
||||
@@ -466,4 +466,4 @@ mr_uint32_t mr_etask_str2id(const char *string)
|
||||
return id;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -75,4 +75,4 @@ mr_uint32_t mr_etask_str2id(const char *string);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _ETASK_H_ */
|
||||
#endif /* _ETASK_H_ */
|
||||
|
||||
@@ -28,12 +28,12 @@ ICM20602是一款低功耗六轴MEMS运动跟踪设备,集成了三轴陀螺仪
|
||||
mr_icm20602_t mr_icm20602_find(const char *name);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:------------|:----------|
|
||||
| name | ICM20602名 |
|
||||
| **返回** | |
|
||||
| ICM20602 | 查找成功 |
|
||||
| MR_NULL | 查找失败 |
|
||||
| 参数 | 描述 |
|
||||
|:---------|:----------|
|
||||
| name | ICM20602名 |
|
||||
| **返回** | |
|
||||
| ICM20602 | 查找成功 |
|
||||
| MR_NULL | 查找失败 |
|
||||
|
||||
----------
|
||||
|
||||
|
||||
@@ -260,4 +260,4 @@ struct mr_icm20602_3_axis mr_icm20602_read_gyro_3_axis(mr_icm20602_t icm20602)
|
||||
return axis;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -95,4 +95,4 @@ struct mr_icm20602_3_axis mr_icm20602_read_gyro_3_axis(mr_icm20602_t icm20602);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _ICM20602_H_ */
|
||||
#endif /* _ICM20602_H_ */
|
||||
|
||||
@@ -312,4 +312,4 @@ mr_ssize_t mr_device_write(mr_device_t device, mr_off_t pos, const void *buffer,
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -17,8 +17,6 @@ static struct mr_object_container mr_object_container_table[] =
|
||||
{Mr_Object_Type_Module, MR_OBJECT_MAGIC, {&mr_object_container_table[Mr_Object_Type_Module].list, &mr_object_container_table[Mr_Object_Type_Module].list}},
|
||||
};
|
||||
|
||||
static mr_size_t mr_allocated_memory_size = 0;
|
||||
|
||||
/**
|
||||
* @brief This function find the object container.
|
||||
*
|
||||
@@ -273,7 +271,7 @@ mr_err_t mr_mutex_take(mr_mutex_t mutex, void *acquirer)
|
||||
return MR_ERR_OK;
|
||||
}
|
||||
|
||||
if(mutex->owner == acquirer)
|
||||
if (mutex->owner == acquirer)
|
||||
{
|
||||
mutex->hold++;
|
||||
|
||||
@@ -369,4 +367,4 @@ MR_WEAK void mr_free(void *memory)
|
||||
{
|
||||
free(memory);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -837,4 +837,4 @@ mr_size_t mr_avl_get_length(mr_avl_t tree)
|
||||
}
|
||||
|
||||
return length;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user