ESP8266-NON_OS的SDK下PWM调试

近期,在调试ESP8266的PWM过程中,遇到了一个耗时很久的问题。在此,记录下来进行分享。

//初始化 PWM,包括 GPIO 选择,周期和占空比。目前仅支持调用一次。
void pwm_init(uint32 period, uint32 *duty,uint32 pwm_channel_num,uint32 (*pin_info_list)[3]);

uint32 period:PWM周期
uint8 *duty:各路PWM的占空比
uint32 pwm_channel_num:PWM通道数
uint32 (*pin_info_list)[3]:PWM各通道的GPIO的硬件参数。本参数是一个N*3的数组指针,数组中定义了GPIO得寄存器,对应PIN脚
的IO复用值和GPIO对应的序号。

在开始不知道的情况下,以为period单位为ms。导致在PWM功能调试下, LED并没有出现相应的变化,而且还导致了程序不断的重启情况。

在看到pwm_set_duty(uint32 duty,uint8 channel)函数解释中举例。原话是:duty的范围随PWM周期变化,最大值为:Period*1000/45。例如1KHZ PWM,duty的范围为0~22222。那么Period*1000/45=22222时,duty占空比此时是最大。算出PWM的周期Period约是1000。再之前说这是1KHZ的PWM,那么它的周期就是1ms。这下就明白了,period的默认单位应该是us。当我设置一个周期为1S的PWM时,就应该初始化为pwm_init(1000000,,)即可成功。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值