流水灯就不搞了,直接呼吸灯吧,8266有现成的pwm驱动文件,直接调用他的接口就可以了。有一个要注意的是不能和硬件定时器同时用,因为它们共⽤了同⼀个硬件定时器。PWM 不⽀持进⼊ Deep sleep 模式,也请勿调用wifi_set_sleep_type(LIGT_SLEEP); 将⾃动睡眠模式设置为 Light-sleep。因为 Lightsleep 在睡眠期间会停 CPU,停 CPU 期间不能响应 NMI 中断。
这里是用pwm接口和软件定时器实现一个呼吸灯。
pwm 模块
- pwm各通道的 GPIO 硬件参数配置
uint32 io_info[][3] = {
{PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12,12},};//可同时配置多通道,这里就用一个通道。
- 各通道初始pwm
uint32 pwm_duty[1]= {0};
- pwm初始化
pwm_init(1000,pwm_duty,1,io_info);//周期1000us,也就是1khz的频率,单通道初始占空比0
定时器回调函数
void pwm_run(void)
{
static uint16 duty=0;//占空比
static flag=false;//变化标志位
if(duty<=0)
{
duty=0;
flag=false;
}
else if(duty>=22200)
{
duty=22200;
flag=true;
}
if(!flag)
{
duty+=5