openharmony用ubuntu编写PWM
第一部分:代码结构
1、我们需要先初始化GPIO为输出
2、初始化PWM
3、配置PWM
主要函数
头文件
#include "iot_gpio.h" // OpenHarmony HAL API:IoT硬件设备操作接口-GPIO
#include "iot_pwm.h" // OpenHarmony HAL API:IoT硬件设备操作接口-PWM
#include "hi_io.h" // 海思SDK API:IoT硬件设备操作接口-IO
#include "hi_pwm.h" // 海思SDK API:IoT硬件设备操作接口-PWM
配置GPIO输出PWM
hi_io_set_func(引脚,模式);
引脚:
开发板上要用的GPIO引脚号
模式:
我们这边主要设置的pwm的模式
具体哪些模式需要查询:
//鸿蒙路径/device/hisilicon/hispark_pegasus/sdk_liteos/include/hi_io.h
https://github.com/HiW666/openharmony-code/blob/main/code/hi_io.h
设置pwm
IoTPwmInit(pwm线程);
pwm线程:
根据上方函数模式里面配置的pwm
比如是pwm1那么就填HI_PWM_PORT_PWM1
pwmx那么就填HI_PWM_PORT_PWMx
输出pwm
hi_pwm_start(pwm线程, ccr, 分辨率);
pwm线程:
根据上方函数模式里面配置的pwm
比如是pwm1那么就填HI_PWM_PORT_PWM1
pwmx那么就填HI_PWM_PORT_PWMx
ccr:
设置占空比参数
分辨率:
设置占空比参数
占用比:
ccr/分辨率
关闭pwm
hi_pwm_stop(pwm线程);
pwm线程:
根据上方函数模式里面配置的pwm
比如是pwm1那么就填HI_PWM_PORT_PWM1
pwmx那么就填HI_PWM_PORT_PWMx
pwm控制音频
hi_pwm_start(pwm线程, freqDivisor/2, freqDivisor);
占空比为百分之50
freqDivisor为分倍频率
freqDivisor=时钟源频率/音频表频率
hi3861为4m/频率
补充
关于鸿蒙默认pwm没有开启
鸿蒙路径/device/hisilicon/hispark_pegasus/sdk_liteos/build/config/usr_config.mk
找到pwm文件
修改为