1,概述

脉冲宽度调制(Pulse width modulation,简称 PWM)是一种利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。

2,API参考

2.1 重要结构体介绍

2.1.1 PWM配置结构体

  1. struct HAL_PWM_CFG_T {
  2. uint32_t freq; //PWM频率
  3. uint8_t ratio; //占空比
  4. bool inv; //反转使能
  5. bool sleep_on; //睡眠使能
  6. };

2.2 主要函数介绍

2.2.1 PWM开启

  • 函数原型:

    1. int hal_pwm_enable(enum HAL_PWM_ID_T id, const struct HAL_PWM_CFG_T *cfg);
  • 函数功能:开启指定PWM通道,并设置PWM配置

  • 函数参数:
    • id:PWM 通道id
    • *cfg:PWM配置
  • 返回值:

    • 0:开启成功
    • 1:通道id错误
    • 2:占空比错误

      2.2.2 PWM关闭

  • 函数原型:

    1. int hal_pwm_disable(enum HAL_PWM_ID_T id);
  • 函数功能:关闭指定PWM通道

  • 函数参数:
    • id:PWM 通道id
  • 返回值:

    • 0:关闭成功
    • 1:通道id错误

      3,使用教程

      3.1 引用头文件

      1. #include "hal_pwm.h" //PWM配置头文件
      2. #include "hal_iomux.h" //io口复用头文件

      3.2 PWM使用

  • 首先利用HAL_PWM_CFG_T结构体对PWM进行配置 ```c struct HAL_PWM_CFG_T pwm_cfg = {

    1. .freq = 8000, // unit: Hz
    2. .ratio = 25, // duty cycle = high/(high+low)
    3. .inv = false,
    4. .sleep_on = false,

    };


- 随后利用IOMUX库中的函数对配置好的PWM IO口进行开启
```c
hal_iomux_set_pwm0(); //pwm0~7都可以使用
  • 最后开启PWM输出即可
    hal_pwm_enable(HAL_PWM_ID_0, &pwm_cfg);