ESP8266的SDK应用开发之pwm输出控制

SDK版本:ESP8266_RTOS_SDK-2.0.0

开发平台:AiThinker_IDE(安信可基于eclipse订制版)

          前言不必多说了

先来说说相关配置,不配置好,连相应的API都无法调用,谈何应用。

pwm应用的API放在根目录的include文件夹下,若想在app文件夹里调用,需要先配置好app目录下的Makefile。

修改如下:在后面添加一个:lpwm,就可以使用pwm.h里的API了

LINKFLAGS_eagle.app.v6 =    \
    -L$(SDK_PATH)/lib       \
    -Wl,--gc-sections       \
    -nostdlib               \
    -T$(LD_FILE)            \
    -Wl,--no-check-sections \
    -u call_user_start      \
    -Wl,-static             \
    -Wl,--start-group       \
    -lcirom                 \
    -lgcc                   \
    -lhal                   \
    -lcrypto                \
    -lfreertos              \
    -llwip                  \
    -lmain                  \
    -lnet80211              \
    -lphy                   \
    -lpp                    \
    -lmbedtls               \
    -lopenssl               \
    -lmqtt                  \
    -lwpa                   \
    -lpwm                   \
    $(DEP_LIBS_eagle.app.v6)\
    -Wl,--end-group

然后现在来看看怎么用吧。

先初始化,esp8266的pwm初始化是所有的pwm通道一起配置的,频率只能一样

void pwm_init(uint32 period, uint32 *duty, uint32 pwm_channel_num, uint32(*pin_info_list)[3]);

period:输出频率

*duty:输出占空比,需要定义一个一维数组来统一配置多路pwm的初始占空比,最小为频率的一份,如果period=1000,即                     1kHz,duty=10,则占空比为1%

pwm_channel_num :需要的输出pwm的通道数

(*pin_info_list)[3] :配置每个通道IO口的复用功能,

来举个栗子:

	uint32 pwm_duty[3]= {10,10,10};
	uint32 io_info[3][3]={
	{PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12,12},
	{PERIPHS_IO_MUX_MTCK_U,FUNC_GPIO13,13},
	{PERIPHS_IO_MUX_MTDO_U,FUNC_GPIO15,15}
	};

    pwm_init(1000,pwm_duty,3,io_info);
    pwm_start();

一定要调用pwm_start();,执行pwm_start();之后就可以输出pwm脉冲了。

中途修改占空比:

void pwm_set_duty(uint32 duty, uint8 channel);

duty:占空比

channel:通道

注意,每次修改都需要调用pwm_start();才会生效

其他的API就不多讲了,

PWM应用就到此结束

猜你喜欢

转载自blog.csdn.net/LinQiPing233/article/details/82352018