1,概述
脉冲宽度调制(Pulse width modulation,简称 PWM)是一种利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。
2,API参考
2.1 重要结构体介绍
2.1.1 PWM配置结构体
struct HAL_PWM_CFG_T {
uint32_t freq; //PWM频率
uint8_t ratio; //占空比
bool inv; //反转使能
bool sleep_on; //睡眠使能
};
2.2 主要函数介绍
2.2.1 PWM开启
函数原型:
int hal_pwm_enable(enum HAL_PWM_ID_T id, const struct HAL_PWM_CFG_T *cfg);
函数功能:开启指定PWM通道,并设置PWM配置
- 函数参数:
- id:PWM 通道id
- *cfg:PWM配置
返回值:
函数原型:
int hal_pwm_disable(enum HAL_PWM_ID_T id);
函数功能:关闭指定PWM通道
- 函数参数:
- id:PWM 通道id
返回值:
首先利用HAL_PWM_CFG_T结构体对PWM进行配置 ```c struct HAL_PWM_CFG_T pwm_cfg = {
.freq = 8000, // unit: Hz
.ratio = 25, // duty cycle = high/(high+low)
.inv = false,
.sleep_on = false,
};
- 随后利用IOMUX库中的函数对配置好的PWM IO口进行开启
```c
hal_iomux_set_pwm0(); //pwm0~7都可以使用
- 最后开启PWM输出即可
hal_pwm_enable(HAL_PWM_ID_0, &pwm_cfg);