ESP8266-SDK的3路PWM输出
ESP8266的PWM和硬件定时器都是使用同一个中断定时器,所以同时只能使用一个,这点要注意
1、PWM的初始化
void pwm_init(
uint32 period,
uint8 *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
uint32 pwm_duty[3]= {0};
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_init(1000, //设置pwm的周期
pwm_duty, //设置pwm的占空比
3, //pwm的通道数
io_info); //pwM的管脚
通过上面就设置好了GPIO12、GPIO13、GPIO15为PWM输出
2、使用软定时器的回调函数来改变占空比
os_timer_disarm(&pwm_timer);
os_timer_setfn(&pwm_timer,(os_timer_func_t *)pwm_callback,NULL);
os_timer_arm(&pwm_timer,100,0);
void pwm_set_duty(uint32 duty, uint8 channel) 这个函数就是用来改变占空比的,duty为改变占空比 channel为哪一个通道
uint32 duty : 设置⾼高电平时间参数,占空⽐比的值为 (duty*45)/ (period*1000)
uint8 channel : 当前要设置的 PWM 通道,取值范围依据实际使⽤用了⼏几路 PWM,
每次更新 PWM 设置后,都需要重新调用void pwm_start (void)函数才能生效
void pwm_callback(void)
{
static unsigned int duty = 0;
if(duty > 20000)
{
duty = 0;
}
duty = duty+ 200;
pwm_set_duty(duty,0);
pwm_set_duty(20000-duty,1);
pwm_set_duty(duty,2);
pwm_start();
os_timer_arm(&pwm_timer,100,0);
}
这样GPIO12、GPIO15、GPIO13就可以输出可变的PWM
ESP8266-SDK的3路PWM输出相关推荐
- 树莓派控制16路PWM输出的PCA9685模块
树莓派控制16路PWM输出的PCA9685模块 1.PCA9685 1.1简介 采用I2C通信,内置了PWM驱动器和一个时钟,不需要不断发送信号占用单片机资源 支持16路PWM输出,每路12位分辨率( ...
- 树莓派4B通过16路PWM输出的PCA9685模块控制舵机(机械臂)附完整代码
树莓派4B通过16路PWM输出的PCA9685模块控制舵机(机械臂)附完整代码 文章目录 树莓派4B通过16路PWM输出的PCA9685模块控制舵机(机械臂)附完整代码 一. Servo Driver ...
- 集成两路MAX1169的STC8G1K08模块,带有两路PWM输出
■ 设计背景 在 集成有MAX1169,MAX520的DAAC单片STC8G1K08机电路板 中设计了集成有MAX1169的ADDA模块,对于一些需要使用PWM驱动的实验,这款模块还无法进行集成实验. ...
- 13. GD32F103C8T6入门教程-定时器-3路pwm输出-刹车死区保护
1.gpio初始化 void gpio_config(void) {/*使能GPIOA GPIOB 时钟*/rcu_periph_clock_enable(RCU_GPIOA);rcu_periph_ ...
- 12. GD32F103C8T6入门教程-定时器-3路pwm输出
1.gpio初始化 void gpio_config(void) {/*使能GPIOA GPIOB 时钟*/rcu_periph_clock_enable(RCU_GPIOA);rcu_periph_ ...
- STM32f103,TIM1,TIM2,TIM3,TIM4,TIM5,TIM8,4路PWM输出配置(保姆级)
没什么可说的,想说的都写在注释里了,重要的事情说三遍:看注释,看注释,看注释 定时器的.c文件: /************************************************** ...
- DI计数器Modbus TCP协议2路PWM输出WiFi模块
产品特点: ● 3路开关量输入,2路开关量输出 ● DI每一路都可用作计数器或者频率测量 ● DO每一路都可独立输出PWM信号 ● 支持Modbus TCP 通讯协议 ● 内置网页功能,可以通过网页查 ...
- 3路DI计数器,2路PWM输出,Modbus TCP协议,WiFi模块WJ165
产品特点: ● 3路开关量输入,2路开关量输出 ● DI每一路都可用作计数器或者频率测量 ● DO每一路都可独立输出PWM信号 ● 支持Modbus TCP 通讯协议 ● 内置网页功能,可以通过 ...
- STM8L051F3P6TR 定时器2两路PWM输出+死区控制+端口重映射PC5PC6
使用定时器2的通道1.2输出PWM CLK_PeripheralClockConfig(CLK_Peripheral_TIM2,ENABLE);//打开串口时钟源TIM2_DeInit();TIM2_ ...
最新文章
- 一:搭建一套免费的serverless网站
- Linux 多网卡bond
- linux操作系统下部署Javaweb项目教程
- sed命令 linux下的超强查找和替换命令
- Mybatis一对一和一对多配置
- 决策树以及XGBoost如何画出 树分裂图?
- Exchange Server 2013部署系列之三:部署邮箱服务器角色
- nginx编译和调试
- nRF52840学习-初识1-1
- ajax传参的3种形式
- 程序员夏天穿格子衫,那么冬天穿什么?
- Python深度学习-第一章、什么是深度学习
- 智能手机 + 机器学习 = 个人终端的未来
- 利用高斯(Guass)算法求解2维的SVP向量
- php后端必学layui框架速搭网站后台
- Latex 绘制函数图像
- 性能测试:深入理解并发量,线程数,吞吐量,TPS
- 职业规划与发展部_3D成像原理
- 白加黑加载方式_“白加黑减”即曝光补偿的应用方法及原理全面详解——致新手新新手...
- 同人女,我想对你说——黄金圣斗士对同人女的真情告白