1.新增pwm驱动模板。

This commit is contained in:
MacRsh
2023-10-10 18:24:30 +08:00
parent 8519ac5731
commit 3096c728e6
2 changed files with 112 additions and 0 deletions

81
driver/drv_pwm.c Normal file
View 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
View 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_ */