环球热推荐:[esp32教程] 3、LEDC使用
0、前期准备
1、参考上一篇文章搭建好esp32环境
2、准备好一块esp32开发开发板(本作者使用了esp32c3作为开发平台)
(资料图)
1、知识储备
1.1 概述
LEDC是乐鑫公司专门开发,通过PWM来控制LED,具有软件控制占空比以及硬件自动控制占空比的方式。同时据说也可以用来控制电机。
1.2 功能架构
LEDC有4个定时器可以独立配置,定时器时钟来源有三个时钟源,分别是:APB_CLK、RC_FAST_CLK 和 XTAL_CLK。
架构图如下所示:
1.3 LEDC配置流程介绍
LEDC的配置流程可分为以下3步
1、定时器配置:设置PWM 频率和占空比分辨率(位数)
2、通道配置:设置定时器通道以及PWM的输出引脚
3、 修改占空比
1、定时器配置
定时器的配置主要是给 ledc_timer_config_t 结构体赋值,然后通过ledc_timer_config函数进行对定时器设置
以下对ledc_timer_config_t 结构体进行说明
typedef struct { ledc_mode_t speed_mode; // ledc速度模式:LEDC_HIGH_SPEED_MODE和LEDC_LOW_SPEED_MODE union { ledc_timer_bit_t duty_resolution; //占空比的分分辨率 ledc_timer_bit_t bit_num __attribute__((deprecated)); //esp-idf 3.1以上已经使用该参数 }; ledc_timer_t timer_num; //定时器编号 uint32_t freq_hz; //pwm频率 ledc_clk_cfg_t clk_cfg; //时钟源:} ledc_timer_config_t;例子:
// 定时器配置ledc_timer_config_t ledcTimerConfig = { .speed_mode = LEDC_LOW_SPEED_MODE, .duty_resolution = LEDC_TIMER_13_BIT, .clk_cfg = LEDC_AUTO_CLK, .freq_hz = 5000, .timer_num = LEDC_TIMER_0,};ledc_timer_config(&ledcTimerConfig);2、通道配置
通道的配置主要是给 ledc_channel_config_t 结构体赋值,然后通过ledc_channel_config函数进行通道设置。
以下对ledc_channel_config_t 结构体进行说明
typedef struct { int gpio_num;//输出pwm的gpio口 ledc_mode_t speed_mode// ledc速度模式:LEDC_HIGH_SPEED_MODE和LEDC_LOW_SPEED_MODE ledc_channel_t channel; // ledc的输出通道: ledc_intr_type_t intr_type; //是否使能中断,如果使能中断之后,需要使用ledc_isr_register函数,进行中断注册,在渐变完成之后,就会调用中断函数 ledc_timer_t timer_sel;//设置使用哪一个定时器,需要和ledc_timer_config_t配置的一致 uint32_t duty;//占空比 int hpoint;//上升沿出现的位置,一般设置为0,最大值为0xfffff struct { unsigned int output_invert: 1;//电平是否翻转,1:0->1, 0:1->0 } flags;} ledc_channel_config_t;例子:
// 通道配置ledc_channel_config_t ledcChannelConfig = { .gpio_num = GPIO_NUM_14, .speed_mode = LEDC_LOW_SPEED_MODE, .channel = LEDC_CHANNEL_0, .intr_type = LEDC_INTR_DISABLE, .timer_sel = LEDC_TIMER_0, .duty = 0, .hpoint = 0, .flags.output_invert = 0,};ledc_channel_config(&ledcChannelConfig);3、 修改占空比
ledc占空比可以通过,软件和硬件两个方式进行设置。
软件方式:主要涉及了ledc_set_duty和ledc_update_duty两个函数,其中
ledc_set_duty:用来设置占空比
ledc_update_duty:使设置生效,
函数参数说明如下:
esp_err_t ledc_set_duty(ledc_mode_t speed_mode, ledc_channel_t channel, uint32_t duty);//参数:speed_mode:ledc速度模式,要和ledc_channel_config_t的speed_mode保持一致// channel:通道,要和ledc_channel_config_t的channel保持一致// duty:占空比,取值范围:0 ~ (2^duty_resolution) - 1 esp_err_t ledc_update_duty(ledc_mode_t speed_mode, ledc_channel_t channel);//参数:speed_mode:ledc速度模式,要和ledc_channel_config_t的speed_mode保持一致// channel:通道,要和ledc_channel_config_t的channel保持一致硬件方式:主要涉及到了ledc_fade_func_install、ledc_set_fade_with_step、ledc_set_fade_with_time和ledc_fade_start几个函数,其中
ledc_fade_func_install:用来使能硬件,使得硬件能够改变占空比,
ledc_set_fade_with_step:用于设置渐变的步长
ledc_set_fade_with_time:用于设置渐变到某一个值,一般ledc_set_fade_with_step和ledc_set_fade_with_time使用其中一个即可
ledc_fade_start:开始渐变
(注意:ledc_set_fade_with_time和ledc_fade_start不是线程安全的,不要在不同的任务中同时调用这些函数来控制一个ledc通道,API的线程安全版本是ledc_set_fade_step_and_start)
函数参数说明如下:
esp_err_t ledc_fade_func_install(int intr_alloc_flags);//参数:intr_alloc_flags:用于分配中断的标志,一般填0即可esp_err_t ledc_set_fade_with_step(ledc_mode_t speed_mode, ledc_channel_t channel, uint32_t target_duty, uint32_t scale, uint32_t cycle_num);// 参数 :speed_mode:ledc速度模式,要和ledc_channel_config_t的speed_mode保持一致// channel:通道,要和ledc_channel_config_t的channel保持一致// target_duty: 目标占空比,取值范围:0 ~ (2^duty_resolution) - 1// scale:控制增加或减少步长比例。// cycle_num:每cycle_num个周期增加或减少占空比esp_err_t ledc_set_fade_with_time(ledc_mode_t speed_mode, ledc_channel_t channel, uint32_t target_duty, int max_fade_time_ms);// 参数 :speed_mode:ledc速度模式,要和ledc_channel_config_t的speed_mode保持一致// channel:通道,要和ledc_channel_config_t的channel保持一致// target_duty: 目标占空比,取值范围:0 ~ (2^duty_resolution) - 1// max_fade_time_ms:减到目标占空比花费的时间esp_err_t ledc_fade_start(ledc_mode_t speed_mode, ledc_channel_t channel, ledc_fade_mode_t fade_mode);// 参数 :speed_mode:ledc速度模式,要和ledc_channel_config_t的speed_mode保持一致// channel:通道,要和ledc_channel_config_t的channel保持一致// fade_mode: 渐变模式,阻塞(LEDC_FADE_WAIT_DONE)和非阻塞(LEDC_FADE_NO_WAIT)2、新建工程
idf.py create-project project_led # 新建工程cd project_ledidf.py set-target esp32c3 # 设置工程使用的芯片2、查看原理图确定按键控制引脚
3、编写程序
本例子是使用软件,配置占空比方式,有兴趣的小伙伴可以尝试使用硬件方式
#include #include #include #include void app_main(void) { // 定时器配置 ledc_timer_config_t ledcTimerConfig = { .speed_mode = LEDC_LOW_SPEED_MODE, .duty_resolution = LEDC_TIMER_13_BIT, .clk_cfg = LEDC_AUTO_CLK, .freq_hz = 5000, .timer_num = LEDC_TIMER_0, }; ledc_timer_config(&ledcTimerConfig); // 通道配置 ledc_channel_config_t ledcChannelConfig = { .gpio_num = GPIO_NUM_5, .speed_mode = LEDC_LOW_SPEED_MODE, .channel = LEDC_CHANNEL_0, .intr_type = LEDC_INTR_DISABLE, .timer_sel = LEDC_TIMER_0, .duty = 0, .hpoint = 0, .flags.output_invert = 0, }; ledc_channel_config(&ledcChannelConfig); float duty_num = 0; int der = 1; while (pdTRUE) { ledc_set_duty(LEDC_LOW_SPEED_MODE,LEDC_CHANNEL_0,(int)(8191*(duty_num/200))); ledc_update_duty(LEDC_LOW_SPEED_MODE,LEDC_CHANNEL_0); if(duty_num == 200) der = 0; else if(duty_num == 0) der = 1; if (der == 1) duty_num +=1; else duty_num -=1; vTaskDelay(10/portTICK_PERIOD_MS); }}4、编译下载
#编译idf.py build#烧录以及查看日志,使用ctrl+] 可以退出监视窗口idf.py -p /dev/ttyUSB0 flash monitor审核编辑:汤梓红
标签:
-
2023-05-29 10:41:59
环球热推荐:[esp32教程] 3、LEDC使用<
基于Ubuntu下,利用esp-idf进行esp32开发的教程
-
2023-05-29 10:01:44
5月29日生意社镍基准价为175633.33元/吨|今热点<
5月29日,生意社镍基准价为175633 33元 吨,与本月初(193350 00元 吨)相比,下降了-9 16%。镍年度统计(2022-05-29--20
-
2023-05-29 09:08:51
前沿资讯!埃及宣布发现两座木乃伊作坊<
埃及宣布发现两座木乃伊作坊
-
2023-05-29 08:31:33
华泰证券:油气产业链高光期 化工静待修复_百事通<
【华泰证券:油气产业链高光期化工静待修复】华泰证券研报指出,23Q1以来化工行业整体价差自22Q4底部回升,
-
2023-05-29 07:19:37
脆皮虾的做法大全集(脆皮虾枣)-环球视点<
当前大家对于脆皮虾枣都是颇为感兴趣的,大家都想要了解一下脆皮虾枣,那么小美也是在网络上收集了一些关于
-
2023-05-29 10:41:59
环球热推荐:[esp32教程] 3、LEDC使用
基于Ubuntu下,利用esp-idf进行esp32开发的教程
-
2023-05-29 10:01:44
5月29日生意社镍基准价为175633.33元/吨|今热点
5月29日,生意社镍基准价为175633 33元 吨,与本月初(193350 00元 吨)相比,下降了-9 16%。镍年度统计(2022-05-29--20
-
2023-05-29 09:08:51
前沿资讯!埃及宣布发现两座木乃伊作坊
埃及宣布发现两座木乃伊作坊
-
2023-05-29 08:31:33
华泰证券:油气产业链高光期 化工静待修复_百事通
【华泰证券:油气产业链高光期化工静待修复】华泰证券研报指出,23Q1以来化工行业整体价差自22Q4底部回升,
-
2023-05-29 07:19:37
脆皮虾的做法大全集(脆皮虾枣)-环球视点
当前大家对于脆皮虾枣都是颇为感兴趣的,大家都想要了解一下脆皮虾枣,那么小美也是在网络上收集了一些关于
-
2023-05-29 06:08:14
天天热门:人工智能奇点临近?
硅谷有一位著名的发明家、未来学家雷·库兹韦尔,十几年前,他在《奇点临近》这本书中提出了一个技术奇点的
-
2023-05-29 04:55:49
新资讯:fx组合最火的歌曲_最强天团fx最受粉丝欢迎的五首歌急!
第一首rumpumpumpum(初智齿)第二首electricshock第三首nuabo转载或一者划引用历本
-
2023-05-29 03:22:21
天天通讯!马桶反臭味怎么办(马桶后面发出臭味是什么原因)
相信大家对马桶反臭味怎么办,马桶后面发出臭味是什么原因的问题都很疑惑,这个问题很多人还不知道怎么解决
-
2023-05-29 01:54:44
智慧农业的智慧逻辑 天天观点
导语智慧与农业,关系密切。有人说,多亏了人类的智慧,使得化肥和农药大大提高了农作物产量,让社会得以快
-
2023-05-29 00:37:08
清洗油烟机设备排名前十名_清洗油烟机设备 全球聚看点
1、餐厅、厨房常常使用的油烟机如果不及时进行清洗,会有很多油迹残留在油烟机表面和烟道,时间久了就会形
-
2023-05-28 22:27:14
要闻速递:导饮丸(关于导饮丸介绍)
大家好,小万来为大家解答以上的问题。导饮丸,关于导饮丸介绍这个很多人还不知道,现在让我们一起来看看吧!
-
2023-05-28 21:42:23
株洲市九方中学开展心理健康月之心理绘画活动
红网时刻新闻5月28日讯(通讯员罗丹)为培养学生积极认知的能力,使学生通过绘画艺术表达的方式,在创作的
-
2023-05-28 20:22:09
【时快讯】发生洪水、城市内涝时如何自救
暴雨突发,容易引发洪涝灾害,对待洪涝灾害不可掉以轻心!一起戳图学习相关知识。来源:四川发布
-
2023-05-28 19:30:28
马自达CX-50行也上市:15.98万起售 终身免费质保 当前要闻
马自达全新紧凑型SUV车型CX-50正式在国内上市,售价区间为15 98-20 68万元。此次车型共推出6款车型,包括两
-
2023-05-28 18:16:43
淘宝分期付款怎么弄 世界即时看
本文内容是由小编为大家搜集关于淘宝分期付款怎么弄,以及的资料,整理后发布的内容,让我们赶快一起来看一
-
2023-05-28 17:29:28
每日热文:nh3是什么气体_nh3
1、取sp3杂化1 在成键过程中,由于原子间的相互影响,同一原子中几个能量相近的不同类型的原子轨道(即波函
-
2023-05-28 16:31:09
广西退休工资调整方案2023最新消息 退休养老金定额如何调整?-今日播报
广西退休工资调整方案2023出炉?上调养老金时间公布吗什么时候开始?2023调整退休养老金细则如何?随社保网
-
2023-05-28 15:18:56
宁夏中卫:当来沙海观星河_每日热议
据新华社报导,大漠孤烟,星河入梦。夜幕下的腾格里沙漠褪去白日的燥热,荒凉而神秘。在万籁俱寂中置身沙海
-
2023-05-28 14:24:38
地球画图片大全_地球画 天天新视野
你们好,最近小活发现有诸多的小伙伴们对于地球画图片大全,地球画这个问题都颇为感兴趣的,今天小活为大家
-
2023-05-28 13:50:53
上海办公用品批发_办公用品批发_天天短讯
1、仁通科技公司是专门做办公用品批发业务的。2、企业的整体办公用品后勤体系,为企业的办公成本增添了巨大
-
2023-05-28 12:19:45
如何为丙烯酸涂料准备纸张表面_送姐姐礼物推荐实用|世界今热点
你需要的东西大画板水彩纸遮蔽胶带石膏油漆搅拌器大酸奶容器大工艺刷砂纸在开始绘画之前,先在纸上涂上石膏
-
2023-05-28 11:41:43
7省市将现大到暴雨 基本信息讲解|每日速读
大家好,今日关于【7省市将现大到暴雨】的话题登上了各大平台的热搜榜,受到全网的关注度非常高,那么【7省
-
2023-05-28 10:49:49
第十三届中国石油工程设计大赛落幕
近日,由中国世界石油理事会国家委员会、中国石油学会、中国石油教育学会联合主办,中国石油大学(北京)承
-
2023-05-28 09:38:21
焦点关注:天龙八部实战前五,慕容复没上榜,扫地僧不过第二,第一众望所归
在第三次交手中,和乔峰对了一掌,使得乔峰倒退了一步,似乎可以看出萧远山的武艺可能在乔峰之上。 而在回
-
2023-05-28 09:11:15
遂川县气象台发布雷电黄色预警信号【III级/较重】【2023-05-27】
遂川县气象台2023年05月27日15时00分发布雷电黄色预警信号:预计未来6小时内,大汾镇、大坑乡、堆子前镇、
-
2023-05-28 08:20:18
玛曲县气象台发布雷电黄色预警信号【2023-05-27】
玛曲县气象台2023年05月27日14时44分发布雷电黄色预警信号:预计6小时内,我县大部乡镇可能发生雷电活动,
-
2023-05-28 06:41:21
加冕五大联赛历史射手王!梅西斩获五大联赛第496球,超越C罗 聚焦
巴黎客战斯特拉斯堡,梅西破门,以496球超越C罗,成为五大联赛历史射手王。截至目前,梅西五大联赛共出场57
-
2023-05-28 05:11:49
全球动态:欧洲留学最便宜的国家都有哪些(欧洲留学最便宜的国家)
1、英国:本科一般需要三年英国教育素以其历史悠久、质量高、标准严闻名于世。2、英国留学最具吸引力的优势
-
2023-05-28 03:17:28
凌晗钱明衍小说第143章 凌晗天悦
1、第一轮茉莉花。2、第三轮当爱已成往事茉莉花当爱已成往事凌晗淘汰了,555555茉莉花和当爱已成往事《茉莉
-
2023-05-28 02:10:46
中铁快运保价物品,签收会后发现损坏。签收时曾提出外箱丢失一扣。有视频证
中铁快运保价物品,签收会后发现损坏。签收时曾提出外箱丢失一扣。有视频证