1.新增pwm驱动模板。
This commit is contained in:
81
driver/drv_pwm.c
Normal file
81
driver/drv_pwm.c
Normal file
@@ -0,0 +1,81 @@
|
||||
/*
|
||||
* Copyright (c) 2023, mr-library Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2023-10-10 MacRsh first version
|
||||
*/
|
||||
|
||||
#include "drv_pwm.h"
|
||||
|
||||
#if (MR_CFG_PWM == MR_CFG_ENABLE)
|
||||
|
||||
static struct drv_pwm_data drv_pwm_data[] =
|
||||
{
|
||||
#ifdef MR_BSP_PWM_1
|
||||
{"pwm1", /* ... */},
|
||||
#endif
|
||||
#ifdef MR_BSP_PWM_2
|
||||
{"pwm2", /* ... */},
|
||||
#endif
|
||||
#ifdef MR_BSP_PWM_3
|
||||
{"pwm3", /* ... */},
|
||||
#endif
|
||||
/* ... */
|
||||
};
|
||||
|
||||
static struct mr_pwm pwm_device[mr_array_num(drv_pwm_data)];
|
||||
|
||||
static mr_err_t drv_pwm_configure(mr_pwm_t pwm, mr_pwm_config_t config)
|
||||
{
|
||||
struct drv_pwm_data *pwm_data = (struct drv_pwm_data *)pwm->device.data;
|
||||
|
||||
/* ... */
|
||||
|
||||
return MR_ERR_OK;
|
||||
}
|
||||
|
||||
static void drv_pwm_write(mr_pwm_t pwm, mr_off_t channel, mr_uint32_t duty)
|
||||
{
|
||||
struct drv_pwm_data *pwm_data = (struct drv_pwm_data *)pwm->device.data;
|
||||
|
||||
/* ... */
|
||||
}
|
||||
|
||||
static mr_uint32_t drv_pwm_read(mr_pwm_t pwm, mr_off_t channel)
|
||||
{
|
||||
struct drv_pwm_data *pwm_data = (struct drv_pwm_data *)pwm->device.data;
|
||||
mr_uint32_t data = 0;
|
||||
|
||||
/* ... */
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
mr_err_t drv_pwm_init(void)
|
||||
{
|
||||
static struct mr_pwm_ops drv_ops =
|
||||
{
|
||||
drv_pwm_configure,
|
||||
drv_pwm_write,
|
||||
drv_pwm_read,
|
||||
};
|
||||
mr_size_t count = mr_array_num(pwm_device);
|
||||
mr_err_t ret = MR_ERR_OK;
|
||||
|
||||
while (count--)
|
||||
{
|
||||
ret = mr_pwm_device_add(&pwm_device[count],
|
||||
drv_pwm_data[count].name,
|
||||
&drv_ops,&drv_pwm_data[count]
|
||||
);
|
||||
MR_ASSERT(ret == MR_ERR_OK);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
MR_INIT_DRIVER_EXPORT(drv_pwm_init);
|
||||
|
||||
#endif
|
||||
31
driver/drv_pwm.h
Normal file
31
driver/drv_pwm.h
Normal file
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Copyright (c) 2023, mr-library Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2023-10-10 MacRsh first version
|
||||
*/
|
||||
|
||||
#ifndef _DRV_PWM_H_
|
||||
#define _DRV_PWM_H_
|
||||
|
||||
#include "device/pwm.h"
|
||||
#include "mrboard.h"
|
||||
|
||||
#if (MR_CFG_PWM == MR_CFG_ENABLE)
|
||||
|
||||
/**
|
||||
* @struct Driver pwm data
|
||||
*/
|
||||
struct drv_pwm_data
|
||||
{
|
||||
const char *name;
|
||||
|
||||
/* ... */
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* _DRV_PWM_H_ */
|
||||
Reference in New Issue
Block a user