no-OS
Loading...
Searching...
No Matches
stm32_pwm.c File Reference

Implementation of stm32 pwm driver. More...

#include <stdlib.h>
#include <errno.h>
#include "no_os_util.h"
#include "no_os_gpio.h"
#include "no_os_pwm.h"
#include "stm32_gpio.h"
#include "stm32_pwm.h"
#include "stm32_irq.h"
Include dependency graph for stm32_pwm.c:

Macros

#define PWM_DEFAULT_PERIOD   0xffff
 
#define NO_OS_CHN_TO_STM32_CHN(x)
 
#define FREQUENCY_HZ_TO_TIME_NS_FACTOR   1000000000.0
 

Functions

int32_t stm32_pwm_init (struct no_os_pwm_desc **desc, const struct no_os_pwm_init_param *param)
 Initialize the PWM.
 
int32_t stm32_pwm_remove (struct no_os_pwm_desc *desc)
 Free the resources allocated by stm32_pwm_init()
 
int32_t stm32_pwm_enable (struct no_os_pwm_desc *desc)
 Enable the PWM.
 
int32_t stm32_pwm_disable (struct no_os_pwm_desc *desc)
 Disable the PWM.
 
int32_t stm32_pwm_set_period (struct no_os_pwm_desc *desc, uint32_t period_ns)
 Set the PWM period.
 
int32_t stm32_pwm_get_period (struct no_os_pwm_desc *desc, uint32_t *period_ns)
 Get the PWM period.
 
int32_t stm32_pwm_set_duty_cycle (struct no_os_pwm_desc *desc, uint32_t duty_cycle_ns)
 Set the PWM duty cycle.
 
int32_t stm32_pwm_get_duty_cycle (struct no_os_pwm_desc *desc, uint32_t *duty_cycle_ns)
 Get the PWM duty cycle.
 

Variables

const struct no_os_pwm_platform_ops stm32_pwm_ops
 STM32 platform specific PWM platform ops structure.
 

Detailed Description

Implementation of stm32 pwm driver.

Copyright 2023-25(c) Analog Devices, Inc.

SPDX-License-Identifier: BSD-3-Clause

Macro Definition Documentation

◆ FREQUENCY_HZ_TO_TIME_NS_FACTOR

#define FREQUENCY_HZ_TO_TIME_NS_FACTOR   1000000000.0

◆ NO_OS_CHN_TO_STM32_CHN

#define NO_OS_CHN_TO_STM32_CHN ( x)
Value:
(0x4*(x-1))

◆ PWM_DEFAULT_PERIOD

#define PWM_DEFAULT_PERIOD   0xffff

Function Documentation

◆ stm32_pwm_disable()

int32_t stm32_pwm_disable ( struct no_os_pwm_desc * desc)

Disable the PWM.

Parameters
desc- PWM descriptor
Returns
0 in case of success, negative error otherwise.

◆ stm32_pwm_enable()

int32_t stm32_pwm_enable ( struct no_os_pwm_desc * desc)

Enable the PWM.

Parameters
desc- PWM descriptor
Returns
0 in case of success, negative error code otherwise.

◆ stm32_pwm_get_duty_cycle()

int32_t stm32_pwm_get_duty_cycle ( struct no_os_pwm_desc * desc,
uint32_t * duty_cycle_ns )

Get the PWM duty cycle.

Parameters
desc- Pointer where the configured instance is stored.
duty_cycle_ns- PWM duty cycle.
Returns
0 in case of success, negative error code otherwise.

◆ stm32_pwm_get_period()

int32_t stm32_pwm_get_period ( struct no_os_pwm_desc * desc,
uint32_t * period_ns )

Get the PWM period.

Parameters
desc- Pointer where the configured instance is stored.
period_ns- PWM period.
Returns
0 in case of success, negative error code otherwise.

◆ stm32_pwm_init()

int32_t stm32_pwm_init ( struct no_os_pwm_desc ** desc,
const struct no_os_pwm_init_param * param )

Initialize the PWM.

Parameters
desc- PWM descriptor.
param- The structure containing PWM init parameters.
Returns
0 in case of success, negative error code otherwise.

◆ stm32_pwm_remove()

int32_t stm32_pwm_remove ( struct no_os_pwm_desc * desc)

Free the resources allocated by stm32_pwm_init()

Parameters
desc- PWM descriptor
Returns
0 in case of success, negative error code otherwise.

◆ stm32_pwm_set_duty_cycle()

int32_t stm32_pwm_set_duty_cycle ( struct no_os_pwm_desc * desc,
uint32_t duty_cycle_ns )

Set the PWM duty cycle.

Parameters
desc- Pointer where the configured instance is stored.
duty_cycle_ns- PWM duty cycle.
Returns
0 in case of success, negative error code otherwise.

◆ stm32_pwm_set_period()

int32_t stm32_pwm_set_period ( struct no_os_pwm_desc * desc,
uint32_t period_ns )

Set the PWM period.

Parameters
desc- Pointer where the configured instance is stored.
period_ns- PWM period.
Returns
0 in case of success, negative error code otherwise.

Variable Documentation

◆ stm32_pwm_ops

const struct no_os_pwm_platform_ops stm32_pwm_ops
Initial value:
= {
.pwm_ops_init = &stm32_pwm_init,
.pwm_ops_enable = &stm32_pwm_enable,
.pwm_ops_disable = &stm32_pwm_disable,
.pwm_ops_set_period = &stm32_pwm_set_period,
.pwm_ops_get_period = &stm32_pwm_get_period,
.pwm_ops_set_duty_cycle = &stm32_pwm_set_duty_cycle,
.pwm_ops_get_duty_cycle = &stm32_pwm_get_duty_cycle,
.pwm_ops_remove = &stm32_pwm_remove
}
int32_t stm32_pwm_enable(struct no_os_pwm_desc *desc)
Enable the PWM.
Definition stm32_pwm.c:824
int32_t stm32_pwm_get_duty_cycle(struct no_os_pwm_desc *desc, uint32_t *duty_cycle_ns)
Get the PWM duty cycle.
Definition stm32_pwm.c:1167
int32_t stm32_pwm_remove(struct no_os_pwm_desc *desc)
Free the resources allocated by stm32_pwm_init()
Definition stm32_pwm.c:755
int32_t stm32_pwm_disable(struct no_os_pwm_desc *desc)
Disable the PWM.
Definition stm32_pwm.c:929
int32_t stm32_pwm_get_period(struct no_os_pwm_desc *desc, uint32_t *period_ns)
Get the PWM period.
Definition stm32_pwm.c:1088
int32_t stm32_pwm_set_period(struct no_os_pwm_desc *desc, uint32_t period_ns)
Set the PWM period.
Definition stm32_pwm.c:1022
int32_t stm32_pwm_set_duty_cycle(struct no_os_pwm_desc *desc, uint32_t duty_cycle_ns)
Set the PWM duty cycle.
Definition stm32_pwm.c:1131
int32_t stm32_pwm_init(struct no_os_pwm_desc **desc, const struct no_os_pwm_init_param *param)
Initialize the PWM.
Definition stm32_pwm.c:677

STM32 platform specific PWM platform ops structure.

STM32 specific PWM platform ops structure.